答案 0 :(得分:4)
来自MSDN(强调我的):
$"{person.Name, 20} is {person.Age:D3} year {(p.Age == 1 ? "" : "s")} old."
您不需要在包含的插值表达式中引用引号字符,因为插值字符串表达式以$开头,并且编译器将包含的插值表达式扫描为平衡文本,直到找到逗号,冒号或关闭大括号。出于同样的原因,最后一个示例使用括号允许条件表达式
(p.Age == 1 ? "" : "s")
在插值表达式中,而冒号不会启动格式规范。在包含的插值表达式之外(但仍在插值字符串表达式中),您可以像往常一样转义引号字符。
如果没有括号,解析器会将冒号后面的部分视为format specifier(比较上面示例中的{person.Age:D3}
部分)。