web-dev-qa-db-fra.com

Comment utilisez-vous la fenêtre immédiate dans Visual Studio?

La fenêtre immédiate est un outil extrêmement utile pour le débogage des applications. Il peut être utilisé pour exécuter des instructions de code valides dans le contexte d'un point d'arrêt et pour inspecter des valeurs. Je l'utilise également pour saisir des extraits de code afin d'apprendre les fonctionnalités linguistiques.

Comment utilisez-vous la fenêtre immédiate?

115
Phillip Ngan

Une fonctionnalité intéressante de la fenêtre Immediate 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 si elle n’est pas partie d'une affectation de variable. Comme indiqué ci-dessus, en mode débogage, vous pouvez interagir avec des variables et exécuter des expressions en mémoire, ce qui joue un rôle important à cet égard.

Par exemple, si vous aviez une méthode statique qui renvoie la somme de deux nombres tels que:

private static int GetSum(int a, int b)
{
    return a + b;
}

Ensuite, dans la fenêtre Immédiate, vous pouvez taper les éléments suivants:

? GetSum(2, 4)
6

Comme vous pouvez le constater, cela fonctionne très bien pour les méthodes statiques. Toutefois, si la méthode est non statique, vous devez interagir avec une référence à l'objet auquel la méthode appartient.

Par exemple, supposons que votre classe ressemble à ceci:

private class Foo
{
    public string GetMessage()
    {
        return "hello";
    }
}

Si l'objet existe déjà en mémoire et qu'il est dans l'étendue, vous pouvez l'appeler dans la fenêtre Immédiat tant qu'il a été instancié avant votre point d'arrêt actuel. (ou au moins avant chaque fois que le code est suspendu en mode débogage):

? foo.GetMessage(); // object ‘foo’ already exists
"hello"

De plus, si vous souhaitez interagir et tester directement la méthode sans vous fier à une instance existante en mémoire, vous pouvez instancier votre instance propre dans Immediate. Fenêtre:

? 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, procédez comme suit:

? new Foo().GetMessage()
"hello" 

Un moyen très courant de voir la valeur d’une méthode consiste à sélectionner le nom de la méthode d’une classe et à effectuer un "Ajouter un suivi" afin que vous puissiez voir sa valeur actuelle dans la fenêtre Suivi. Cependant, encore une fois, l'objet doit être instancié et dans l'étendue pour qu'une valeur valide soit affichée. C'est beaucoup moins puissant et plus restrictif que d'utiliser la fenêtre immédiate.

En plus de l'inspection des méthodes, vous pouvez faire des équations mathématiques simples:

? 5 * 6
30

ou comparer des valeurs:

? 5==6
false
? 6==6
true

Le point d'interrogation ('?') Est inutile si vous vous trouvez directement dans la fenêtre Immédiate, mais il est inclus ici par souci de clarté (pour distinguer les expressions typées des résultats.) Cependant, si vous êtes dans la fenêtre de commande et avez besoin de pour faire quelques trucs rapides dans la fenêtre Immédiat, puis faites précéder vos déclarations par "? et c'est parti.

Intellisense fonctionne dans la fenêtre Immediate , mais cela peut parfois être un peu incohérent. D'après mon expérience, il semble être disponible uniquement en mode débogage, mais pas en mode conception, mode non débogage.

Malheureusement, un autre inconvénient de la fenêtre Immediate est qu’elle ne prend pas en charge les boucles.

126
Ray Vega

Utiliser la fenêtre immédiate pour exécuter des commandes

La fenêtre immédiate peut également être utilisée pour exécuter des commandes. Il suffit de taper un > suivi de la commande.

enter image description here

Par exemple >Shell cmd lancera une commande Shell (cela peut être utile pour vérifier quelles variables d’environnement ont été passées à Visual Studio, par exemple). >cls effacera l'écran.

Voici une liste des commandes si couramment utilisées qu'elles ont leur propre alias: https://msdn.Microsoft.com/en-us/library/c3a0kd3x.aspx

10
CJBS

La fenêtre Immediate sert à déboguer et à évaluer des expressions, à exécuter des instructions, à imprimer des valeurs de variables, etc. Il vous permet de saisir des expressions à évaluer ou à exécuter par le langage de développement lors du débogage.

Pour afficher la fenêtre Immediate, choisissez Debug> Windows> Immediate ou appuyez sur Ctrl-Alt-I.

enter image description here

Voici un exemple avec la fenêtre immédiate:

int Sum(int x, int y) { return (x + y);}
void main(){
int a, b, c;
a = 5;
b = 7;
c = Sum(a, b);
char temp = getchar();}

ajouter un point d'arrêt

enter image description here

commandes d'appel

enter image description here

https://msdn.Microsoft.com/en-us/library/f177hahy.aspx

5
Isma Rekathakusuma