Интерполированная строка С# с условным оператором

Я попытался использовать условный оператор внутри интерполированной строки, но поскольку в нем есть двоеточие, компилятор думает, что после того, как двоеточие появится в строке формата.

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

Как я могу использовать этот тип инструкции? Единственное, что приходит мне на ум, это что-то вроде этого:

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

Ответы

Ответ 1

Вам нужно поместить строку в круглые скобки в {}, поэтому: {(1 == 1 ? "yes" : "no")}.

Ответ 2

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

Маленькие скобки возвращают переменную, и это единственное, что допускается внутри больших скобок вместе с полутольком и форматированием.