7

Ho iniziato a utilizzare C# Interactive e mi piace il fatto che posso esplorare ed esplorare alcune funzionalità API come faccio con Immediate senza la necessità di eseguire e debuggare il mio programma.E 'possibile generare automaticamente il valore in C# Interactive (REPL) come fa Immediate?

Il problema è che non emette informazioni come immediata non a meno che non faccio un comando con un nome di variabile:

> 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 
> 

C'è un modo per rendere C# Interactive uscita i valori in ogni valutazione come Immediate fa (E senza scrivere altro codice per quello come Console.Write)?

risposta

12

Sì, per generare il risultato di un'espressione valutata, semplicemente non inserire un punto e virgola alla fine. Nel tuo esempio, invece di questo:

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

fare questo:

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

See the documentation

+0

Wow. Come mi sono perso? Grazie. –

5

Dopo aver terminato con un dichiarazione (ad esempio, per finire con ;), che è necessario quando si dichiara variabili, non si ottiene alcun output, in quanto si suppone che abbia solo effetti collaterali.

Quando si termina con un'espressione (ad esempio non termina con ;), si ottiene il risultato di tale espressione. Una soluzione è:

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

Avviso a come espressione, alla fine, si otterrà il valore stampato.


Personalmente, per frammenti multilinea voglio provare, di solito ho una variabile res:

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

L'overhead digitazione avviene una volta per sessione di Visual Studio, ma poi mi basta usare Alt + per selezionare una delle voci precedenti.

+0

Bello. Grazie. Ma la risposta di @Crowcoder è più simile a quello che stavo cercando. Upvoted. –

+1

Ok, ora capisco che la tua domanda è stata più semplice di quanto affermato. Ho risposto sulla base che intendevi memorizzare il valore in una variabile e stamparlo, invece di stamparlo. – acelent

+0

Ci scusiamo per la confusione. –