Eine nette Funktion des Sofortfensters in Visual Studio ist die Möglichkeit, den Rückgabewert einer Methode auszuwerten, insbesondere wenn sie von Ihrem Clientcode aufgerufen wird, aber nicht Teil einer Variablenzuweisung ist. Wie bereits erwähnt, können Sie im Debug-Modus mit Variablen interagieren und Ausdrücke im Speicher ausführen, was eine wichtige Rolle dabei spielt.
Wenn Sie beispielsweise eine statische Methode hatten, die die Summe zweier Zahlen zurückgibt, z.
private static int GetSum(int a, int b)
{
return a + b;
}
Dann können Sie im Direktfenster Folgendes eingeben:
? GetSum(2, 4)
6
Wie Sie sehen können, funktioniert dies sehr gut für statische Methoden. Wenn die Methode jedoch nicht statisch ist, müssen Sie mit einem Verweis auf das Objekt interagieren, zu dem die Methode gehört.
Nehmen wir zum Beispiel an, Ihre Klasse sieht so aus:
private class Foo
{
public string GetMessage()
{
return "hello";
}
}
Wenn das Objekt bereits im Speicher vorhanden ist und sich im Gültigkeitsbereich befindet, können Sie es im Direktfenster aufrufen, solange es vor Ihrem aktuellen Haltepunkt (oder zumindest vor dem Anhalten des Codes im Debug-Modus) instanziiert wurde :
? foo.GetMessage(); // object ‘foo’ already exists
"hello"
Wenn Sie die Methode direkt interagieren und testen möchten, ohne sich auf eine vorhandene Instanz im Speicher zu verlassen, können Sie Ihre eigene Instanz im Direktfenster instanziieren :
? Foo foo = new Foo(); // new instance of ‘Foo’
{temp.Program.Foo}
? foo.GetMessage()
"hello"
Sie können noch einen Schritt weiter gehen und die Ergebnisse der Methode vorübergehend Variablen zuweisen, wenn Sie weitere Auswertungen, Berechnungen usw. durchführen möchten.
? string msg = foo.GetMessage();
"hello"
? msg + " there!"
"hello there!"
Wenn Sie nicht einmal einen Variablennamen für ein neues Objekt deklarieren und nur eine seiner Methoden / Funktionen ausführen möchten, gehen Sie folgendermaßen vor:
? new Foo().GetMessage()
"hello"
Eine sehr häufige Methode, um den Wert einer Methode anzuzeigen, besteht darin, den Methodennamen einer Klasse auszuwählen und eine 'Watch hinzufügen' auszuführen, damit Sie den aktuellen Wert im Watch-Fenster sehen können. Das Objekt muss jedoch erneut instanziiert werden, damit ein gültiger Wert angezeigt werden kann. Dies ist viel weniger leistungsfähig und restriktiver als die Verwendung des Sofortfensters.
Zusammen mit den Inspektionsmethoden können Sie einfache mathematische Gleichungen erstellen:
? 5 * 6
30
oder Werte vergleichen:
? 5==6
false
? 6==6
true
Das Fragezeichen ('?') Ist nicht erforderlich, wenn Sie sich direkt im Direktfenster befinden. Es wird jedoch aus Gründen der Übersichtlichkeit hier eingefügt (um zwischen den eingegebenen Ausdrücken und den Ergebnissen zu unterscheiden). Wenn Sie sich jedoch im Befehlsfenster befinden und benötigen Um ein paar schnelle Dinge im Direktfenster zu erledigen, gehen Sie Ihren Aussagen mit '?' und los geht's.
Intellisense funktioniert im Direktfenster , kann aber manchmal etwas inkonsistent sein. Nach meiner Erfahrung scheint es nur im Debug-Modus verfügbar zu sein, nicht jedoch im Nicht-Debug-Modus.
Leider ist ein weiterer Nachteil des Sofortfensters, dass es keine Schleifen unterstützt.