2015-11-02 21 views
16

Ho provato a utilizzare l'operatore condizionale all'interno di una stringa interpolata, ma poiché contiene due punti, il compilatore pensa che dopo i due punti provenga una stringa di formato.Stringa interpolata C# con operatore condizionale

$"test {foo ? "foo is true" : "foo is false"}"; 

Come posso utilizzare questo tipo di istruzione? L'unica cosa che mi viene in mente è qualcosa di simile:

var fooString = foo ? "foo is true" : "foo is false"; 
$"test {fooString}"; 
+2

Questa è una stringa [interpolata] (https://msdn.microsoft.com/en-GB/library/dn961160.aspx). [Verbatim stringhe] (https://msdn.microsoft.com/en-GB/library/362314fe.aspx) sono quelle che iniziano con '@" 'e possono contenere caratteri che normalmente richiederebbero l'escape. –

risposta

37

È necessario mettere la stringa tra parentesi entro {}, quindi: {(1 == 1 ? "yes" : "no")}.

-1
$"test {(foo ? "foo is true" : "foo is false")}"; 

Le piccole parentesi restituire una variabile, e questa è l'unica cosa che ha permesso all'interno delle grandi parentesi insieme con il punto e virgola e la formattazione.