转义大括号
左大括号和右大括号被解释为格式项的开始和结束。 因此,必须使用转义序列显示文本左大括号或右大括号。 在固定文本中指定两个左大括号 ("{{") 以显示一个左大括号 ("{"),或指定两个右大括号 ("}}") 以显示一个右大括号 ("}")。 按照在格式项中遇到大括号的顺序依次解释它们。 不支持解释嵌套的大括号。
解释转义大括号的方式会导致意外的结果。 例如,考虑要显示一个左大括号、一个设置为十进制数格式的数值和一个右大括号的格式项“{{{0:D}}}”。 但是,实际是按照以下方式解释该格式项:
-
前两个左大括号 ("{{") 被转义,生成一个左大括号。
-
之后的三个字符 ("{0:") 被解释为格式项的开始。
-
下一个字符 ("D") 将被解释为 Decimal 标准数值格式说明符,但后面的两个转义大括号 ("}}") 生成单个大括号。 由于得到的字符串 ("D}") 不是标准数值格式说明符号,所以得到的字符串会被解释为用于显示字符串“D}”的自定义格式字符串。
-
最后一个大括号 ("}") 被解释为格式项的结束。
-
显示的最终结果是字符串“{D}”。 不会显示本来要设置格式的数值。
在编写代码时,避免错误解释转义大括号和格式项的一种方法是单独设置大括号和格式项的格式。 也就是说,在第一个格式设置操作中显示文本左大括号,在下一操作中显示格式项的结果,然后在最后一个操作中显示文本右大括号。 下面的示例阐释了这种方法。
int value = 6324; string output = string.Format("{0}{1:D}{2}", "{", value, "}"); Console.WriteLine(output); // The example displays the following output: // {6324}