Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# interpolated string with conditional-operator [duplicate]

I tried to use the conditional operator inside an interpolated string, but because it has a colon in it, the compiler thinks that after the colon comes a format string.

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

How can I use this type of statement? The only thing that comes to my mind is something like this:

var fooString = foo ? "foo is true" : "foo is false"; $"test {fooString}"; 
like image 572
wertzui Avatar asked Nov 02 '15 08:11

wertzui


2 Answers

You need to put the string in parentheses within {}, so: {(1 == 1 ? "yes" : "no")}.

like image 76
Tomáš Hübelbauer Avatar answered Oct 19 '22 07:10

Tomáš Hübelbauer


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

The code inside the parentheses returns a variable, and that's the only thing allowed inside the curly brackets. The colon ':' is a special character in string interpolation, hence it needs to be parenthesised.

like image 33
GregoryHouseMD Avatar answered Oct 19 '22 07:10

GregoryHouseMD