C# 当我将鼠标悬停在UoW中的public getter上时,Private字段会自动初始化

C# 当我将鼠标悬停在UoW中的public getter上时,Private字段会自动初始化,c#,asp.net-mvc,breakpoints,getter,C#,Asp.net Mvc,Breakpoints,Getter,有点奇怪。。我刚刚在MVC项目中实现了工作单元模式,并对其进行了调试,以确保其按预期工作。然而,我注意到我的代码、模式或visual studio都有一点奇怪 以下是我在UoW中的存储库引用示例: UoW是在每次请求时创建和释放的,因此可以假设私有字段m_DemonstrationRepository在第一次访问该属性时为空。如果我打开断点并查看m_DemonstrationRepository,它实际上是空的,如下所示: 这就是奇怪的地方。。如果我现在将鼠标悬停在public proper

有点奇怪。。我刚刚在MVC项目中实现了工作单元模式,并对其进行了调试,以确保其按预期工作。然而,我注意到我的代码、模式或visual studio都有一点奇怪

以下是我在UoW中的存储库引用示例:

UoW是在每次请求时创建和释放的,因此可以假设私有字段m_DemonstrationRepository在第一次访问该属性时为空。如果我打开断点并查看m_DemonstrationRepository,它实际上是空的,如下所示:

这就是奇怪的地方。。如果我现在将鼠标悬停在public property DemonstrationRepository上,它会声明它不再为null(将鼠标悬停在public property上之前会显示它为null)。。如下图所示:

最后。。如果我现在将鼠标悬停在m_DemonstrationRepository上,它将不再为null

作为进一步的测试,我在DemonstrationRepository的构造函数中添加了一些代码,并在其上设置了一个断点,以查看初始化的时间。如果我删除所有其他断点,断点将按预期每次命中,但是如果我在getter中有一个断点(如图所示),并且我首先将鼠标悬停在DemonstrationRepository上,那么构造函数中的断点将不会命中!如果我重复相同的请求,在getter中点击断点,但不查看公共属性,只需按continue,那么对象将按预期初始化,构造函数的断点将点击

我希望这已经足够清楚了,这让我在转圈子


谢谢

这就像将鼠标悬停在属性上调用属性的
Get
方法而忽略断点一样。这类似于在调试时枚举IEnumerable的结果。看起来确实如此,我在UoW类中有一些存储库的属性,我可以将它们一个一个地悬停在上面并初始化它们!进一步阅读后,您可以在VS中禁用它,但您将无法再查看属性的值。毕竟,调试器必须以某种方式获取该值。那怎么样。。。谢谢,朋友。。我在谷歌上搜索了很长时间,但说得不对!但愿我以前看到过!没问题!很高兴这证实了我的怀疑。这就像将鼠标悬停在属性上调用属性的
Get
方法而忽略断点一样。这类似于在调试时枚举IEnumerable的结果。看起来确实如此,我在UoW类中有一些存储库的属性,我可以将它们一个一个地悬停在上面并初始化它们!进一步阅读后,您可以在VS中禁用它,但您将无法再查看属性的值。毕竟,调试器必须以某种方式获取该值。那怎么样。。。谢谢,朋友。。我在谷歌上搜索了很长时间,但说得不对!但愿我以前看到过!没问题!很高兴这证实了我的怀疑。