为什么.NET中格式字符串中的转义括号(花括号)为“{{”或“}}”而不是“\ {”或“\}”

时间:2014-06-09 04:43:07

标签: c# string formatting format

有一个问题how-to-escape-brackets-curly-braces-in-a-format-string-in-net但没有描述原因?为什么使用{{}}而不是\{\}

例如。 string s = String.Format("{{ hello to all }}");  为什么不在字符串中使用\{之类的字符串转义,例如:\b\n\t

**我想知道深层原因或语言设计**

1 个答案:

答案 0 :(得分:12)

格式字符串在运行时期间解释(不在编译期间)

如果 C#允许输入\{\},则它将分别作为{}存储在字符串中。然后string.Format函数读取该字符串以决定是否要解释格式化指令,例如{0}。由于\{在字符串中生成{字符,因此 String.Format 函数无法确定将其视为格式指令还是文字{{1 }}。因此, string.Format {视为文字{{。类似于{的{​​{1}}。

在C#中转义:

}}