У меня есть код как это:
private Box mCurBox;
public Box CurBox
{
get { return mCurBox; }
set
{
if (mCurBox != value)
{
mCurBox = value;
}
}
}
Когда mCurBox
является пустым затем CurBox
отладчик говорит, "Не мог быть оценен". Если это знает, что значение внизу является нулевым затем, каким образом это не может понять это?
Это потому, что вы не определили mCurBox как что-либо по умолчанию, поэтому компилятор помечает это как неопределенное поведение.
Вам нужно инициализировать mCurBox как null, либо в той же строке, в которой вы его определяете, либо в конструкторе.
В общем, рекомендуется инициализировать ссылочные типы равными нулю, если вы не присваиваете им что-либо при их определении.
Кроме того, поскольку вы просто назначаете и извлекаете, вы можете легко использовать автоматические свойства.
Время от времени отладчик может стать неуклюжим. Но ожидаемый случай получения сообщения «Не удалось оценить» - это сборка выпуска. Такие простые свойства оптимизируются компилятором JIT. Код получения свойства даже не будет присутствовать.