Одна хорошая особенность Immediate Window в Visual Studio является возможностью оценить возвращаемое значение методы , особенно если она вызвана вашим код клиента , но это не часть присваивания переменного. В режиме отладки, как уже упоминалось, вы можете взаимодействовать с переменными и выполнять выражения в памяти, что играет важную роль в этом.
Например, если у вас есть статический метод, который возвращает сумму двух чисел, например:
private static int GetSum(int a, int b)
{
return a + b;
}
Затем в окне Immediate Window вы можете ввести следующее:
? GetSum(2, 4)
6
Как видите, это действительно хорошо работает для статических методов. Однако, если метод нестатический, вам необходимо взаимодействовать со ссылкой на объект, которому принадлежит метод.
Например, допустим, так выглядит ваш класс:
private class Foo
{
public string GetMessage()
{
return "hello";
}
}
Если объект уже существует в памяти и находится в области видимости, вы можете вызвать его в Immediate Window, если он был создан до вашей текущей точки останова (или, по крайней мере, до того места, где код приостановлен в режиме отладки):
? foo.GetMessage(); // object ‘foo’ already exists
"hello"
Кроме того, если вы хотите взаимодействовать и протестировать метод напрямую, не полагаясь на существующий экземпляр в памяти, вы можете создать свой собственный экземпляр в окне Immediate Window:
? Foo foo = new Foo(); // new instance of ‘Foo’
{temp.Program.Foo}
? foo.GetMessage()
"hello"
Вы можете пойти дальше и временно присвоить результаты метода переменным, если хотите проводить дальнейшие оценки, вычисления и т. Д .:
? string msg = foo.GetMessage();
"hello"
? msg + " there!"
"hello there!"
Более того, если вы даже не хотите объявлять имя переменной для нового объекта, а просто хотите запустить один из его методов / функций, сделайте следующее:
? new Foo().GetMessage()
"hello"
Очень распространенный способ увидеть значение метода - выбрать имя метода класса и выполнить «Добавить наблюдение», чтобы вы могли видеть его текущее значение в окне отслеживания. Однако, еще раз, объект должен быть создан и находиться в области видимости для отображения допустимого значения. Это намного менее эффективно и более ограничительно, чем использование Immediate Window.
Наряду с проверкой методов вы можете выполнять простые математические уравнения:
? 5 * 6
30
или сравните значения:
? 5==6
false
? 6==6
true
Знак вопроса ('?') Не нужен, если вы находитесь непосредственно в окне Immediate Window, но он включен здесь для ясности (чтобы различать введенные выражения и результаты). Однако, если вы находитесь в Command Window и вам нужно чтобы быстро выполнить какие-то действия в окне Immediate Window, тогда перед вашими операторами ставьте '?' и вперед.
Intellisense работает в непосредственном окне , но иногда может быть немного непоследовательным. По моему опыту, похоже, что он доступен только в режиме отладки, но не в режиме разработки, без отладки.
К сожалению, еще одним недостатком Immediate Window является то, что оно не поддерживает циклы.