Як використовувати потрійний оператор всередині інтерпольованого рядка?


408

Мене бентежить питання, чому цей код не збирається:

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

Якщо я розділю його, він працює добре:

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

9
@Sinatr Оновлено посилання: thebillwagner.com/Blog/Item/…
Nate Barbettini


Відповіді:


722

Відповідно до документації :

Структура інтерпольованого рядка така:

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

Проблема полягає в тому, що двокрапка використовується для позначення форматування, наприклад:

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

Рішення полягає в загортанні умовного в дужки:

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

2
Ще більш цікавий приклад це один , коли вам потрібно використовувати вкладену інтерполяції рядки: Console.WriteLine($"Cargo Weight: {(ship.WeightAvailable ? $"{ship.Weight:0.00}" : "n/a")}");
Jan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.