ReSharper 2025.2 Help

代码检查:参数隐藏主构造函数参数

如果在初始化期间抛出异常,使用对象初始化器初始化 using 变量可能会成为问题。 这是可能的,因为编译器会在执行进入 using 子句之前创建并初始化对象。 如果在初始化期间抛出异常,程序将永远不会进入 using 子句,并且对象将不会被释放。

在下面的示例中, Print() 方法的参数 strMySample 类的主构造函数参数同名,但仍然可以清楚地看到 Console.WriteLine(str); 将输出 two

现在假设 MySamplePrint() 是具有多个参数的冗长声明。 在这种情况下,代码的读者可能会忽略方法中的 str 参数,并假设 Console.WriteLine(str); 将输出在对象创建期间接收到的 one

为避免混淆和潜在错误,请重命名方法参数。

public class MyTest { public MyTest() { var sample = new MySample("one"); sample.Print("two"); } } public class MySample(string str) { public void Print(string str) { Console.WriteLine(str); } }
最后修改日期: 2025年 9月 27日