C# - null vs"无法评估表达式"

Vac*_*ano 6 c# debugging visual-studio-2008 visual-studio

我有这样的代码:

    private Box mCurBox;

    public Box CurBox
    {
        get { return mCurBox; }
        set
        {
            if (mCurBox != value)
            {
                mCurBox = value;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果mCurBox为null,则CurBox调试器显示"无法评估".如果它知道下面的值是null,那怎么会弄清楚呢?

Rub*_*bys 7

那是因为你没有默认将mCurBox定义为任何东西,所以编译器将其标记为未定义的行为.
您需要将mCurBox初始化为null,无论是在您定义它的同一行中,还是在构造函数中.
通常,如果在定义引用类型时没有为它们赋值,那么将引用类型初始化为null是一种很好的做法.
此外,当您只是分配和检索时,您可以轻松使用自动属性.