web-dev-qa-db-fra.com

Comment utiliser l'opérateur ternaire dans une chaîne interpolée?

Je ne comprends pas pourquoi ce code ne compile pas:

var result = $"{fieldName}{isDescending ? " desc" : string.Empty}";

Si je le sépare, cela fonctionne bien:

var desc = isDescending ? " desc" : string.Empty;
var result = $"{fieldName}{desc}";
350
Nate Barbettini

Selon le documentation :

La structure d'une chaîne interpolée est la suivante:

{ <interpolationExpression>[,<alignment>][:<formatString>] }

Le problème est que les deux points sont utilisés pour indiquer le formatage, comme:

Console.WriteLine($"The current hour is {hours:hh}")

La solution consiste à encapsuler le conditionnel entre parenthèses:

var result = $"Descending {(isDescending ? "yes" : "no")}";
621
Nate Barbettini