Однією з приємних властивостей негайного вікна в Visual Studio є його здатність оцінювати повернене значення методу, особливо якщо він викликається вашим клієнтським кодом, але він не є частиною призначення змінної. У режимі налагодження, як було зазначено, ви можете взаємодіяти зі змінними та виконувати вирази в пам'яті, що відіграє важливу роль у можливості цього зробити.
Наприклад, якщо у вас був статичний метод, який повертає суму двох чисел, таких як:
private static int GetSum(int a, int b)
{
return a + b;
}
Потім у Негайне вікно ви можете ввести наступне:
? GetSum(2, 4)
6
Як бачите, це дуже добре працює для статичних методів. Однак якщо метод нестатичний, вам потрібно взаємодіяти з посиланням на об'єкт, до якого належить метод.
Наприклад, скажімо так, як виглядає ваш клас:
private class Foo
{
public string GetMessage()
{
return "hello";
}
}
Якщо об’єкт вже існує в пам'яті і він знаходиться в області застосування, то ви можете викликати його у «Негайному вікні», якщо він був створений перед вашою поточною точкою розриву (або, принаймні, перед тим, де код призупинено в режимі налагодження):
? foo.GetMessage(); // object ‘foo’ already exists
"hello"
Крім того, якщо ви хочете взаємодіяти і тестувати метод безпосередньо, не покладаючись на наявний екземпляр у пам'яті, ви можете створити інстанцію власного екземпляра у негайному вікні:
? 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"
Дуже поширений спосіб побачити значення методу - це вибрати ім'я методу класу та зробити "Додати перегляд", щоб ви могли бачити його поточне значення у вікні "Дивитися". Однак, ще раз, об'єкт потрібно екземплярувати і мати область для відображення дійсного значення. Це набагато менш потужно і більш обмежено, ніж використання миттєвого вікна.
Поряд з методами перевірки, ви можете робити прості математичні рівняння:
? 5 * 6
30
або порівняти значення:
? 5==6
false
? 6==6
true
Знак питання ('?') Є непотрібним, якщо ви перебуваєте безпосередньо у Негайному вікні, але він тут включений для наочності (щоб розрізняти введені вирази від результатів.) Однак, якщо ви знаходитесь у вікні команд і вам потрібно зробити кілька швидких речей у «Негайному вікні», а потім передувати вашим заявам з «?» і ви йдете.
Intellisense працює в «Негайному вікні» , але іноді це може бути трохи непослідовно. На мій досвід, здається, він доступний лише в режимі налагодження, але не в режимі дизайну, не налагодження.
На жаль, ще одним недоліком негайного вікна є те, що він не підтримує циклів.