Не то, чтобы я знаю о. Обратите внимание, что, если Вы делаете , добавляют переменную, она будет удалена компилятором в сборках конечных версий так или иначе...
Обновление: Эта функциональность была добавлена к VS2013. Вы видите возвращаемые значения в авто окнах или использовании $ReturnValue
в окне часов / непосредственном окне.
значение может только быть замечено непосредственно после возврата из функции, таким образом самый легкий способ получить доступ к нему путем помещения точки останова на вызов функции, и переступите (F10) через вызов.
<час> Обновление для VS2015: шикните! к сожалению, это, кажется, не находится в VS2015 (devenv v14)
Обновление для VS2017: это вернулось. (devenv v15)
Перетащите выражение возврата в окно часов.
, Например, в перетаскивании оператора
return someTableAdapter.getSomeData();
someTableAdapter.getSomeData()
в окно часов, и Вы будете видеть значение.
можно сделать это для любого выражения.
Вы могли попытаться выбрать "someTableAdapter.getSomeData();"
, щелкнуть правой кнопкой по нему и пойти для Быстрые Часы .
Открытие Debug в †’ окно Autos получает Вас близко. Это не покажет фактическое возвращаемое значение, но это покажет то, что было оценено в операторе возврата.
Можно также попросить оценивать значение в промежуточном окне также, если это не устанавливает флаги или другие переменные, но только возвращает что-то.
Единственным путем я знаю, должен поместить точку останова в возвратную линию и затем звонить окно Quick Watch и ввести возвращенное выражение:
someTableAdapter.getSomeData();
, Но это только работает, если вызов не изменяет состояние никакого объекта (так как будет второй вызов к тому же методу при возобновлении выполнения).
Шаг из движения () метод с помощью Shift-F11, и затем в "Авто" окне отладки, которое это покажет возвращаемому значению вызова метода, который просто появился от стека (в этом случае, движение () метод, который является тем, что Вы хотите). Это - поведение в Visual Studio 2005; я не использовал Visual Studio 2008, таким образом, я не знаю, ведет ли это себя тот же путь в той версии.
Существует много обходных решений, но ни один не кажется удовлетворительным.
, Чтобы заключить John Skeet в кавычки ниже (комментируют теперь удаленный ответ):
Все еще взгляды, неудобные для меня - особенно, если Вы не знаете, в каком возвращаемом значении Вы испытываете необходимость, прежде чем Вы начнете отлаживать. Я действительно не хочу должным быть иметь временную переменную, загромождающую мой код каждый раз, когда я когда-либо возвращаю anything.t
В теории, отладчик мог иметь return
- переменная. В конце концов: это - просто переменная на стеке:
unsafe {
int * sp = stackalloc int[1];
try {
return a+b;
}
finally {
Trace.WriteLine("return is " + *(sp+3));
}
}
Так считают это запросом новых функций для Visual Studio.
Microsoft Visual C++ делал это, но Visual Studio не делает, AFAIK... :(