C# 使用条件运算符插入字符串

C# interpolated string with conditional-operator

我试图在一个内插字符串中使用条件运算符,但是因为它里面有一个冒号,编译器认为冒号后面是一个格式字符串。

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

如何使用这种类型的语句? 我唯一想到的是这样的:

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

圆括号内的代码 returns 是一个变量,这是大括号内唯一允许的内容。冒号':'是字符串插值中的特殊字符,需要加括号。

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