C # - ноль против "Не удалось оценить выражение" - PullRequest
6 голосов
/ 22 апреля 2010

У меня есть такой код:

    private Box mCurBox;

    public Box CurBox
    {
        get { return mCurBox; }
        set
        {
            if (mCurBox != value)
            {
                mCurBox = value;
            }
        }
    }

Если mCurBox равно нулю, то CurBox отладчик говорит: «Не удалось оценить». Если он знает, что значение снизу равно нулю, то почему он не может понять это?

Ответы [ 2 ]

7 голосов
/ 22 апреля 2010

Это потому, что вы не определили mCurBox как нечто по умолчанию, поэтому компилятор помечает это как неопределенное поведение.
Вам нужно инициализировать mCurBox как ноль, либо в той же строке, что вы его определили, либо в конструкторе..
Как правило, рекомендуется инициализировать ссылочные типы в null, если вы не назначаете им что-либо при их определении.
Кроме того, поскольку вы просто присваиваете и извлекаете, вы можете легко использовать свойства auto..

2 голосов
/ 22 апреля 2010

Отладчик может время от времени становиться слабым. Но ожидаемый случай получения «Не удалось оценить» - это сборка выпуска. Простые свойства, подобные этому, оптимизируются компилятором JIT. Код получателя свойства даже не будет присутствовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...