为什么我不能在没有括号的插值字符串中使用条件运算符?

为什么我不能在ac#-6字符串插值中使用内联条件运算符,而不在括号内包含它?

在此处输入图像描述

和错误:

在此处输入图像描述

如您所见,解析器似乎很难。 这是一个错误,还是字符串插值机制的一个特性?

来自MSDN (强调我的):

$"{person.Name, 20} is {person.Age:D3} year {(p.Age == 1 ? "" : "s")} old." 

您不需要在包含的插值表达式中引用引号字符,因为插值字符串表达式以$开头,编译器将包含的插值表达式扫描为平衡文本,直到找到逗号,冒号或关闭大括号。 出于同样的原因, 最后一个示例使用括号来允许条件表达式(p.Age == 1 ? "" : "s")在插值表达式中,而冒号不会启动格式规范 。 在包含的插值表达式之外(但仍在插值字符串表达式中),您可以像往常一样转义引号字符。

如果没有括号,解析器会将冒号后面的部分视为格式说明符 (比较上面示例中的{person.Age:D3}部分)。