web-dev-qa-db-fra.com

Chaîne interpolée C # avec opérateur conditionnel

J'ai essayé d'utiliser l'opérateur conditionnel à l'intérieur d'une chaîne interpolée, mais parce qu'il contient deux points, le compilateur pense qu'après les deux points vient une chaîne de format.

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

Comment puis-je utiliser ce type de déclaration? La seule chose qui me vient à l'esprit est quelque chose comme ceci:

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

Vous devez mettre la chaîne entre parenthèses dans {}, Donc: {(1 == 1 ? "yes" : "no")}.

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

Le code entre parenthèses renvoie une variable, et c'est la seule chose autorisée à l'intérieur des accolades. Le signe deux-points ':' est un caractère spécial dans l'interpolation de chaîne, il doit donc être mis entre parenthèses.

7
GregoryHouseMD