代码检查:参数隐藏了主构造函数参数
使用对象初始化器初始化 示意图 变量可能会出现问题,如果在初始化期间抛出异常。 这是可能的,因为编译器会在执行进入 示意图 子句之前创建并初始化对象。 如果在初始化期间抛出异常,程序将永远不会进入 示意图 子句,并且对象不会被释放。
在下面的示例中, 打印() 方法的 str 参数与 MySample 类的主构造函数参数同名,但仍然可以清楚地看到 Console.WriteLine(str); 将输出 两个。
现在假设 MySample 和 打印() 是带有多个参数的冗长声明。 在这种情况下,代码的读者可能会忽略方法中的 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月 26日