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

huo*_*125 5 c# string format formatting

有一个问题如何转义 - 括号 - 花括号 - 格式 - 字符串在网中,但没有描述原因?为什么使用{{}}不使用\{\}.

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

**我想知道深层原因还是来自语言设计**

HAB*_*JAN 12

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

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

在C#中转义:

- character literal escaping:   e.g. '\'', '\n', '\u20AC' (the Euro € currency sign), '\x9' (equivalent to \t))
- literal string escaping:  e.g. "...\t...\u0040...\U000000041...\x9..."
- verbatim string escaping: e.g. @"...""..."
- string.Format escaping:   e.g. "...{{...}}..."
- keyword escaping: e.g. @if (for if as identifier)
- identifier escaping:  e.g. i\u0064 (for id)
Run Code Online (Sandbox Code Playgroud)