string CPP_NAME_SPACE = "test"
System.Console.WriteLine("} // namespace {0}", CPP_NAME_SPACE); // FormatException
System.Console.WriteLine("} // namespace {0}"); // normal
System.Console.WriteLine("// namespace {0}", CPP_NAME_SPACE); // normal
为什么第一行抛出FormatException但不抛出第二行?
答案 0 :(得分:7)
第一行会引发异常,因为它尝试使用值填充{0}
并且在开头有一个未转义的大括号}
(它应该是{{ 1}}以避免异常)。 <{1}}开头的}}
被视为格式代码,不完整,因此无法处理。
第二行没有因为没有填充字符串的值所以它按原样打印。