带条件运算符的C#插值字符串

wer*_*zui 33 c# conditional-operator string-interpolation

我试图在插值字符串中使用条件运算符,但由于它中有冒号,编译器认为在冒号后出现格式字符串.

$"test {foo ? "foo is true" : "foo is false"}";
Run Code Online (Sandbox Code Playgroud)

我该如何使用这种声明?我想到的唯一一件事是这样的:

var fooString = foo ? "foo is true" : "foo is false";
$"test {fooString}";
Run Code Online (Sandbox Code Playgroud)

Tom*_*uer 78

你需要将字符串放在括号内{},所以:{(1 == 1 ? "yes" : "no")}.


Gre*_*eMD 7

$"test {(foo ? "foo is true" : "foo is false")}";   
Run Code Online (Sandbox Code Playgroud)

括号内的代码返回一个变量,这是大括号内唯一允许的内容。冒号“:”是字符串插值中的特殊字符,因此需要加括号。