Отладчик VS2010: имя 'VARIABLE_NAME' не существует в текущем контексте - PullRequest
2 голосов
/ 26 марта 2012

Отладка метода итератора в VS2010 SP1 (с настройками DEBUG ... без оптимизации компилятора), одна из моих переменных, операнд , "не существует в текущем контексте" в соответствии с Quick Watch в Немедленное окно (я также не получаю всплывающее окно, если навести курсор мыши на переменную).

Переменная находится в области видимости.

Мысли о том, что может вызывать это или как его избежать?

private IEnumerable<Answer> CreateVirtualFormulaAnswers(Question question, List<Answer> answers)
{
    string[] formulaParts = question.Formula.Split(FORMULA_SPLIT, StringSplitOptions.None);
    string formula = formulaParts[0].Trim();
    if (formulaParts.Length != 2) throw new Exception("Formula format is incorrect: " + question.Formula);

    // At this point:
    //    formulaParts.Length = 2
    //    formulaParts has a non-null string at each index
    //    Mouse over of "op" in VS2010 debugger does not show any popup
    //    Quick watch and immediate window both state: "The name 'operand' does not exist in the current context"
    string operand = formulaParts[1].Trim();

    string answerText = (from a in answers where a.QuestionCode == op select a.Text).SingleOrDefault();

    if (answerText != null)
    {
        yield return new Answer()
        {
            /* Initialization code here based on formula */
        };
    }
}

1 Ответ

0 голосов
/ 26 марта 2012

Кажется, это, как полагает Тудор, ограничение VS 2010 SP1.

Я обнаружил, что операнд не становится видимым для отладчика, пока он фактически не используется кодомне только после точки назначения.

В частности:

Debug.WriteLine(operand);

правильно напечатано на консоли.

Кроме того, однажды операнд был оцененблагодаря условию , где оператора Linq, Quick Watch и Immediate Window внезапно узнали об этом.

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