Una característica interesante de la ventana Inmediato en Visual Studio es su capacidad para evaluar el valor de retorno de un método particularmente si es llamado por su código de cliente, pero es que no parte de una asignación de variables. En el modo de depuración, como se mencionó, puede interactuar con variables y ejecutar expresiones en la memoria, lo que juega un papel importante para poder hacer esto.
Por ejemplo, si tiene un método estático que devuelve la suma de dos números, como:
private static int GetSum(int a, int b)
{
return a + b;
}
Luego, en la ventana Inmediato, puede escribir lo siguiente:
? GetSum(2, 4)
6
Como puede ver, esto funciona muy bien para métodos estáticos. Sin embargo, si el método no es estático, debe interactuar con una referencia al objeto al que pertenece el método.
Por ejemplo, digamos que así es como se ve su clase:
private class Foo
{
public string GetMessage()
{
return "hello";
}
}
Si el objeto ya existe en la memoria y está dentro del alcance, entonces puede llamarlo en la Ventana Inmediata siempre que haya sido instanciado antes de su punto de interrupción actual (o, al menos, antes donde el código esté en pausa en modo de depuración):
? foo.GetMessage(); // object ‘foo’ already exists
"hello"
Además, si desea interactuar y probar el método directamente sin depender de una instancia existente en la memoria, puede crear una instancia de su propia instancia en la ventana Inmediato:
? Foo foo = new Foo(); // new instance of ‘Foo’
{temp.Program.Foo}
? foo.GetMessage()
"hello"
Puede ir un paso más allá y asignar temporalmente los resultados del método a variables si desea hacer más evaluaciones, cálculos, etc.
? string msg = foo.GetMessage();
"hello"
? msg + " there!"
"hello there!"
Además, si ni siquiera desea declarar un nombre de variable para un nuevo objeto y solo desea ejecutar uno de sus métodos / funciones, haga esto:
? new Foo().GetMessage()
"hello"
Una forma muy común de ver el valor de un método es seleccionar el nombre del método de una clase y hacer un 'Agregar inspección' para que pueda ver su valor actual en la ventana Inspección. Sin embargo, una vez más, es necesario crear una instancia del objeto y tener el alcance para que se muestre un valor válido. Esto es mucho menos poderoso y más restrictivo que usar la Ventana Inmediata.
Junto con los métodos de inspección, puede hacer ecuaciones matemáticas simples:
? 5 * 6
30
o comparar valores:
? 5==6
false
? 6==6
true
El signo de interrogación ('?') No es necesario si está directamente en la ventana Inmediato, pero se incluye aquí para mayor claridad (para distinguir entre las expresiones escritas y los resultados). Sin embargo, si está en la ventana de comandos y necesita para hacer algunas cosas rápidas en la ventana Inmediato y luego preceda sus declaraciones con '?' y listo.
Intellisense funciona en la ventana Inmediato , pero a veces puede ser un poco inconsistente. En mi experiencia, parece que solo está disponible en el modo de depuración, pero no en el modo de diseño, sin depuración.
Desafortunadamente, otro inconveniente de la ventana inmediata es que no admite bucles.