有一个问题how-to-escape-brackets-curly-braces-in-a-format-string-in-net但没有描述原因?为什么使用{{
或}}
而不是\{
或\}
。
例如。 string s = String.Format("{{ hello to all }}")
;
为什么不在字符串中使用\{
之类的字符串转义,例如:\b\n\t
**我想知道深层原因或语言设计**
答案 0 :(得分:12)
格式字符串在运行时期间解释(不在编译期间)
如果 C#允许输入\{
或\}
,则它将分别作为{
和}
存储在字符串中。然后string.Format函数读取该字符串以决定是否要解释格式化指令,例如{0}
。由于\{
在字符串中生成{
字符,因此 String.Format 函数无法确定将其视为格式指令还是文字{{1 }}。因此, string.Format 将{
视为文字{{
。类似于{
的{{1}}。
在C#中转义:
}}