Одной приятной особенностью 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";
}
}
Если объект уже существует в памяти и находится в области видимости, то вы можете вызвать его в «Немедленном окне», если он был создан до вашей текущей точки останова (или, по крайней мере, до того момента, когда код приостановлен в режиме отладки):
? 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, а затем предшествовать вашим заявлениям с «?» и пошли.
Intellisense работает в «Немедленном окне» , но иногда оно может быть немного противоречивым. По моему опыту, кажется, что он доступен только в режиме отладки, но не в режиме разработки, не в режиме отладки.
К сожалению, еще одним недостатком окна Immediate является то, что оно не поддерживает циклы.