JetBrains Rider 2025.2 Help

代码检查:可能意外的字符串插值而非格式字符串模板

以下代码乍看之下没问题,但它将返回 你好 0! ,而不是 你好,world! ,这可能是预期的结果。

Console.WriteLine($"Hello {0}!", "world");

多年来,字符串格式化方法——String.Format()Console.WriteLine() 等——是我们将硬编码字符串字面量与变量值结合的首选方式。 这就是为什么大括号中的数字 {} 在第一个参数中看起来非常自然。 但是, 字符串插值符号逐渐取代了字符串格式化方法,它也使用大括号将表达式插入目标字符串。 因此,在上述示例中,第一个带有 $ 前缀的参数将被处理为插值字符串,然后才会传递给格式化方法。 此时, {0} 占位符将已被其计算值 0 替换,而格式化方法将忽略第二个参数。

JetBrains Rider 建议从第一个参数中移除 $ 前缀,以便字符串格式化方法能够按预期工作:

Console.WriteLine("Hello {0}!", "world");
最后修改日期: 2025年 9月 26日