C#-空对空;无法计算表达式“的值”;
我有这样的代码:C#-空对空;无法计算表达式“的值”;,c#,visual-studio,visual-studio-2008,debugging,C#,Visual Studio,Visual Studio 2008,Debugging,我有这样的代码: private Box mCurBox; public Box CurBox { get { return mCurBox; } set { if (mCurBox != value) { mCurBox = value; } } } 当mCurBox为空时,则CurBox调试
private Box mCurBox;
public Box CurBox
{
get { return mCurBox; }
set
{
if (mCurBox != value)
{
mCurBox = value;
}
}
}
当
mCurBox
为空时,则CurBox
调试器会显示“无法计算”。如果它知道下面的值是空的,那么它怎么会不知道呢 这是因为默认情况下没有将mCurBox定义为任何内容,因此编译器将其标记为未定义的行为。您需要在定义mCurBox的同一行或构造函数中将其初始化为null。
一般来说,如果在定义引用类型时没有给它们赋值,最好将其初始化为null。
此外,由于您只是分配和检索,因此可以轻松地使用自动属性。调试器可以时不时地使用gimpy。但是获得“无法评估”的预期情况是发布版本。这样的简单属性可以通过JIT编译器进行优化。属性getter代码甚至不存在。我怀疑“将引用类型初始化为null是一种好做法”这句话;框架负责将这些值指定给它们的默认值。