我有这样的代码:
private Box mCurBox;
public Box CurBox
{
get { return mCurBox; }
set
{
if (mCurBox != value)
{
mCurBox = value;
}
}
}
当mCurBox
为空时,CurBox
调试器显示“无法评估”。如果它知道下面的值是null,那怎么会弄清楚呢?
答案 0 :(得分:7)
那是因为你没有默认将mCurBox定义为任何东西,所以编译器将其标记为未定义的行为。
您需要将mCurBox初始化为null,无论是在您定义它的同一行中,还是在构造函数中
一般来说,如果在定义引用类型时没有为它们赋值,那么将引用类型初始化为null是一种很好的做法
此外,当您只是分配和检索时,您可以轻松使用自动属性。
答案 1 :(得分:2)
调试器偶尔会变得笨拙。但是获得“无法评估”的预期情况是发布版本。像这样的简单属性被JIT编译器优化掉了。属性getter代码甚至不存在。