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)