Jak korzystać z operatora trójskładnikowego w interpolowanym ciągu?


408

Nie wiem, dlaczego ten kod się nie skompiluje:

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

Jeśli podzielę to, działa dobrze:

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

9
@Sinatr Zaktualizowano link: thebillwagner.com/Blog/Item/…
Nate Barbettini


Odpowiedzi:


722

Zgodnie z dokumentacją :

Struktura interpolowanego ciągu jest następująca:

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

Problem polega na tym, że dwukropek służy do oznaczania formatowania, na przykład:

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

Rozwiązaniem jest zawarcie warunku w nawiasie:

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

2
Jeszcze bardziej interesujące jest to jeden z przykładów, kiedy trzeba użyć interpolacji zagnieżdżony ciąg: Console.WriteLine($"Cargo Weight: {(ship.WeightAvailable ? $"{ship.Weight:0.00}" : "n/a")}");
Jan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.