建议在C#中使用覆盖而不是新的关键字.为什么这个规则?
"新"意味着就CLR而言,你有两种完全不同的方法 - 它们碰巧具有相同的名称,但它们在继承方面是无关的.这意味着,如果你运行:
Base b = new Derived(); Derived d = new Derived(); b.MyMethod(); // Calls Base.MyMethod d.MyMethod(); // Calls Derived.MyMethod
这可能会产生一些非常难以理解的代码.
通常,如果您需要不同的方法,请将它们称为不同的东 使用相同名称(和签名)的正常原因是覆盖基类方法的行为.此时您没有任何选择,只能保持名称/签名相同.