Une caractéristique intéressante de la fenêtre immédiate de Visual Studio est sa capacité à évaluer la valeur de retour d'une méthode, en particulier si elle est appelée par votre code client mais qu'elle est no une partie d'une affectation de variable. En mode Debug, comme mentionné, vous pouvez interagir avec les variables et exécuter des expressions en mémoire, ce qui joue un rôle important.
Par exemple, si vous aviez une méthode statique qui renvoie la somme de deux nombres comme :
private static int GetSum(int a, int b)
{
return a + b;
}
Ensuite, dans la fenêtre immédiate, vous pouvez taper ce qui suit :
? GetSum(2, 4)
6
Comme vous pouvez le constater, cela fonctionne très bien pour les méthodes statiques. Cependant, si la méthode n'est pas statique, vous devez interagir avec une référence à l'objet auquel la méthode appartient.
Par exemple, disons que voici à quoi ressemble votre classe :
private class Foo
{
public string GetMessage()
{
return "hello";
}
}
Si l'objet existe déjà en mémoire et qu'il est dans le champ d'application, vous pouvez l'appeler dans la fenêtre immédiate à condition qu'il ait été instancié. antes de votre point d'arrêt actuel (ou, au moins, avant l'endroit où le code est mis en pause en mode débogage) :
? foo.GetMessage(); // object ‘foo’ already exists
"hello"
De plus, si vous souhaitez interagir et tester la méthode directement sans vous appuyer sur une instance existante en mémoire, vous pouvez alors instancier votre propre dans la fenêtre immédiate :
? Foo foo = new Foo(); // new instance of ‘Foo’
{temp.Program.Foo}
? foo.GetMessage()
"hello"
Vous pouvez aller plus loin et affecter temporairement les résultats de la méthode à des variables si vous souhaitez effectuer d'autres évaluations, calculs, etc :
? string msg = foo.GetMessage();
"hello"
? msg + " there!"
"hello there!"
De plus, si vous ne voulez même pas déclarer un nom de variable pour un nouvel objet et que vous voulez juste exécuter une de ses méthodes/fonctions, faites ceci :
? new Foo().GetMessage()
"hello"
Une façon très courante de voir la valeur d'une méthode est de sélectionner le nom de la méthode d'une classe et d'effectuer un 'Add Watch' afin de voir sa valeur actuelle dans la fenêtre Watch. Cependant, une fois encore, l'objet doit être instancié et dans le champ d'application pour qu'une valeur valide soit affichée. Cette méthode est beaucoup moins puissante et plus restrictive que l'utilisation de la fenêtre immédiate.
En plus des méthodes d'inspection, vous pouvez effectuer des équations mathématiques simples :
? 5 * 6
30
ou de comparer des valeurs :
? 5==6
false
? 6==6
true
Le point d'interrogation ('?') n'est pas nécessaire si vous êtes directement dans la fenêtre immédiate, mais il est inclus ici pour des raisons de clarté (pour faire la distinction entre les expressions tapées et les résultats). Cependant, si vous êtes dans la fenêtre de commande et que vous avez besoin d'effectuer quelques opérations rapides dans la fenêtre immédiate, faites précéder vos instructions de ' ?
Intellisense fonctionne dans la fenêtre immédiate mais il peut parfois être un peu incohérent. D'après mon expérience, elle semble être disponible uniquement en mode débogage, mais pas en mode conception, non débogage.
Malheureusement, un autre inconvénient de la fenêtre immédiate est qu'elle ne supporte pas les boucles.