7

Ich begann mit C# Interactive und mag die Tatsache, dass ich einige API-Funktionen wie ich mit Immediate durchsuchen und erkunden kann, ohne mein Programm ausführen und debuggen zu müssen.Ist es möglich, Wert in C# Interaktiv (REPL) wie Immediate automatisch auszugeben?

Das Problem ist, dass es nicht ausgibt die Informationen wie Immediate ist, wenn ich einen Befehl mit einem Variablennamen zu tun:

> string.Format("{0,15}", 10m);   //hit enter, here there is no output 
> var a = string.Format("{0,15}", 10m); //hit enter so... 
> a          // hit enter and... 
    "  10"       //...here the value is shown 
> 

Gibt es eine Möglichkeit C# Interactive Ausgabe der Werte in jeder Auswertung wie Immediate tut zu machen (Und ohne mehr Code dafür schreiben wie Console.Write)?

Antwort

12

Ja, um das Ergebnis eines ausgewerteten Ausdrucks auszugeben, geben Sie einfach kein Semikolon an. In Ihrem Beispiel statt dessen:

string.Format("{0,15}", 10m); 

dies tun:

string.Format("{0,15}", 10m) 

See the documentation

+0

Wow. Wie habe ich es verpasst? Vielen Dank. –

5

Wenn Sie mit einer Anweisung beenden (zB mit ; Endung), die Sie müssen bei der Deklaration Variablen, Sie erhalten keine Ausgabe, da es nur Nebenwirkungen haben soll.

Wenn Sie mit einem Ausdruck fertig sind (z. B. nicht endend mit ;), erhalten Sie das Ergebnis dieses Ausdrucks. Eine Abhilfe ist:

var a = string.Format("{0,15}", 10m); a 

Hinweis a als Ausdruck am Ende, werden Sie seinen Wert gedruckt werden.


persönlich für mehrzeilige Schnipsel ich testen will, muss ich in der Regel eine res Variable:

object res; 
// code where I set res = something; 
using (var reader = new System.IO.StringReader("test")) 
{ 
    res = reader.ReadToEnd(); 
} 
res 

Die Typisierung Kopf geschieht einmal pro Visual Studio-Session, aber dann nur ich Alt + , um einen der vorherigen Einträge auszuwählen.

+0

Schön. Vielen Dank. Aber die Antwort von @Crowcoder ist mehr wie ich gesucht habe. Upvoted. –

+1

Ok, ich verstehe jetzt deine Frage war einfacher als gesagt. Ich habe auf der Basis geantwortet, dass Sie den Wert in einer Variablen speichern und drucken möchten, anstatt nur zu drucken. – acelent

+0

Sorry für die Verwirrung. –