当是我的C#财产初始化?
-
11-07-2019 - |
题
我有点感到困惑的时候,正是我的财产是被初始化。
假设我有一个酒店宣布这样的:
private Dictionary<string, Dictionary<string,string>> MessageLookup
{
get
{
return messages ?? doSomething();
}
}
对或重写现有的方法填充信息的字典和返回。
我的问题是,当时是这样的代码跑?如果我把一个断点进入或重写现代码,是不是打,但MessageLookup酒店是保持数据(这是唯一的地方进行初始化)时,我认为它在调试器。
这是码在运行的建设?并调试器自动运行,当我悬停的变量名字?如果是这样,为什么不断点打?
解决方案
每当有人指属性即代码运行,而不是之前。
如果您使用调试器,你会看到它,因为调试器会尝试自动获取属性值(这样你就可以看到该对象的状态)。我不知道调试器是否忽略断点,而它的评估本身的属性 - 这可以解释一切
尝试运行代码的不是一个调试器的,并提出一些代码访问你的财产:
var lookup = someObject.MessageLookup;
请doSomething()
转储堆栈跟踪,你会看到发生了什么事情。
不隶属于 StackOverflow