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

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

如果我把它分开,它可以正常工作:

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

根据文档:

插值字符串的结构如下所示: {<interpolationExpression>[,<align >][:<formatString>]}

问题是冒号是用来表示格式的,比如:

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

解决方法是用括号括起条件句:

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