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
Run Code Online (Sandbox Code Playgroud)
为什么第一行抛出FormatException但不抛出第二行?
第一行抛出一个异常,因为它试图{0}用一个值填充一个值,并且}在开始时有一个未转义的大括号(它应该是}}为了避免异常).所述}在开始被视为一个格式代码,因此它不能处理它是不完整的.
第二行没有,因为没有值填充字符串,因此它按原样打印.