92

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}";
1

2 Answers 2

222

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

Sign up to request clarification or add additional context in comments.

Comments

51
$"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.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.