代码检查:可能无意的字符串插值而非格式字符串模板
以下代码乍一看没问题,但它将返回 您好 0! ,而不是 您好,world! ,这可能是预期的结果。
Console.WriteLine($"Hello {0}!", "world");
多年来,字符串格式化方法——String.Format()、 Console.WriteLine() 等——是我们将硬编码字符串字面量与变量值结合的首选方式。 这就是为什么大括号中的数字 {} 在第一个参数中看起来非常自然。 但是, 字符串插值符号逐渐取代了字符串格式化方法,它也使用大括号将表达式插入目标字符串。 因此,在上述示例中,第一个带有 $ 前缀的参数将被处理为插值字符串,之后才会传递给格式化方法。 此时, {0} 占位符将已被其计算值(即 0 )替换,而格式化方法将忽略第二个参数。
ReSharper 建议从第一个参数中移除 $ 前缀,以便字符串格式化方法能够按预期工作:
Console.WriteLine("Hello {0}!", "world");
最后修改日期: 2025年 9月 27日