use*_*875 13 c# overriding new-operator
可能重复:
C#关键字使用情况虚拟+覆盖与新增
新和重写之间的差异?
所以我一直在研究一个项目,并决定阅读C#中关键字new和override关键字之间的区别.
从我看到的情况来看,似乎使用new关键字功能是在代码中创建错误的好方法.除此之外,我真的不知道何时使用它真的有意义.
更多出于好奇心,有什么模式可以让new关键字成为正确的方法吗?
new当您想要隐藏基础实现时,关键字是正确的方法,而您并不关心在以多态方式处理对象时无法调用方法.
让我澄清一下.考虑以下:
public class Base
{
public void DoSomething()
{
Console.WriteLine("Base");
}
}
public class Child : Base
{
public new void DoSomething()
{
Console.WriteLine("Child");
}
}
Run Code Online (Sandbox Code Playgroud)
有时,隐藏子类的功能是有益的,因此使用new关键字.问题是一些开发人员盲目地这样做会导致以下副作用(因此你提到的'bug'):
Base instance = new Child();
instance.DoSomething(); // may expect "Child" but writes "Base"
Run Code Online (Sandbox Code Playgroud)