代码检查:在格式字符串中,格式说明符后不要使用右大括号
此检查会突出显示复合字符串或插值字符串中的格式说明符意外捕获右大括号(} )的情况。 这可能会导致运行时错误或格式化行为不正确。
例如,在以下代码中:
string result = string.Format("{0:x}}}", 42);
在这里,第二个右大括号(}} )被格式化逻辑误解为嵌套格式项的一部分。 这会导致运行时错误或意外的格式化结果。
字符串插值(例如 Console.WriteLine($"Value: {42:x}}}"); )在内部会被转换为对 .NET Framework 中 string.Format 的调用。 因此,在使用字符串插值时也会出现此问题。
您可以在 官方 Microsoft 文档中找到有关复合格式化的更多信息。
从 .NET 5 开始,此问题由编译器处理。 格式说明符现在以减少歧义的方式进行处理,确保额外的右大括号不会导致错误。 这在大多数情况下消除了手动调整的需要。
对于面向 .NET Framework 或 .NET 5.0 之前版本的旧项目,手动将表达式更改为 ToString 和字符串连接的组合是解决此问题的最简单方法,同时确保清晰性和兼容性。
在这种情况下,更正后的版本将如下所示:
string result = 42.ToString("x") + "}";
最后修改日期: 2025年 9月 27日