【发布时间】:2016-06-09 13:01:52
【问题描述】:
【问题讨论】:
标签: c# c#-6.0 string-interpolation
【问题讨论】:
标签: c# c#-6.0 string-interpolation
来自MSDN(强调我的):
$"{person.Name, 20} is {person.Age:D3} year {(p.Age == 1 ? "" : "s")} old."您不需要在包含的插值表达式中引用引号字符,因为插值字符串表达式以 $ 开头,编译器将包含的插值表达式作为平衡文本扫描,直到找到逗号、冒号或右大括号。出于同样的原因,最后一个示例使用括号来允许条件表达式
(p.Age == 1 ? "" : "s")位于插值表达式内,而冒号开始格式规范。在包含的插值表达式之外(但仍在插值字符串表达式内),您可以像往常一样转义引号字符。
如果没有括号,解析器会将冒号后面的部分视为format specifier(比较上面示例的{person.Age:D3} 部分)。
【讨论】:
: 左侧的? 运算符并提出了一个更好的错误,而不是五个:)