这会抛出FormatException:
Console.WriteLine("strict digraph {0}\n{", project.ProjectName);
但这很好:
Console.WriteLine("strict digraph {0}\n", project.ProjectName);
我需要尾随'{'并且\{不是有效的转义码.我的代码到底出了什么问题?如何使其运行?
您将需要通过另一个花括号转义大括号:
Console.WriteLine("strict digraph {0}\n{{", project.ProjectName);
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请查看相关的MSDN文章" 复合格式 "及其"转义大括号"部分.
是状态
打开和关闭括号被解释为开始和结束格式项.因此,您必须使用转义序列来显示文字左括号或右括号.在固定文本中指定两个开括号("{{")以显示一个左括号("{")或两个右括号("}}")以显示一个右括号("}").格式项中的大括号按其遇到的顺序依次解释.不支持解释嵌套大括号.
但请注意.这可能会导致意外行为:{{{0:D}}}例如,以格式字符串为例.它应该输出"{10}",例如,不应该吗?它应该,但它没有.上面的MSDN文章linke说明了这一点
- 前两个开口支撑("{{")被转义并产生一个开口支撑.
- 接下来的三个字符("{0:")被解释为格式项的开头.
- 下一个字符("D")将被解释为十进制标准数字格式说明符,但接下来的两个转义大括号("}}")将产生一个大括号.由于结果字符串("D}")不是标准数字格式说明符,因此结果字符串将被解释为自定义格式字符串,这意味着显示文字字符串"D}".
- 最后一个大括号("}")被解释为格式项的结尾.
- 显示的最终结果是文字字符串"{D}".不显示要格式化的数值.
绕过MSDN建议使用以下代码:
var result = string.Format("{0}{1:D}{2}", "{", 10, "}");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1685 次 |
| 最近记录: |