如何在插值字符串中使用三元运算符?

时间:2015-08-05 22:45:44

标签: c# .net ternary-operator c#-6.0

我很困惑为什么这段代码不会编译:

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

如果我将它拆分,它可以正常工作:

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

1 个答案:

答案 0 :(得分:585)

根据documentation

  

插值字符串的结构如下:

     

$ "{ <interpolation-expression> <optional-comma-field-width> <optional-colon-format> }"

问题是冒号用于表示格式,例如:

Console.WriteLine($"Time in hours is {hours:hh}")

所以, TL; DR 的答案是:将条件括在括号中:

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