補間された文字列内で三項演算子を使用するにはどうすればよいですか?


408

このコードがコンパイルされない理由について、私は混乱しています。

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

私がそれを分割した場合、それはうまくいきます:

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

9
:更新されたリンク@Sinatr thebillwagner.com/Blog/Item/...
ネイトBarbettini


Roslynチーム関連のディスカッション:?:
mins

回答:


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")}");
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.