与重写和新功能混淆C#
这个问题在这里已经有了答案:
virtual
它可以在子类中被覆盖。 如果您想在子类中更改方法(在基类中声明为虚拟方法),则可以同时使用new
关键字和override
关键字,但它们之间存在差异
。 使用new时 :如果您将子类的对象作为基类转换,然后调用该方法,则将运行基类实现
。 使用覆盖时 :如果您将子类的对象作为基类转换,然后调用该方法,则子类实现将运行。
这是代码
AbstractClass instance = new DerivedClass();
instance.SayGoodbye(); //See you later - In derived class I'm in NEW member
但是如果你使用override
AbstractClass instance = new DerivedClass();
instance.SayGoodbye(); //Goodbye- abstract member n
链接地址: http://www.djcxy.com/p/38131.html