c#中的阴影

本文关键字:阴影 | 更新日期: 2023-09-27 18:12:02

我正在使用c#。我有两个类A和B。B继承自A。它们都有一个Foo()方法(在A中是虚的)。现在,如果我有

A b = new B();
int x = b.Foo();

则调用A中的Foo()。但是如果B中的Foo()具有'new'关键字,则再次调用基类中的Foo()。那我为什么要用阴影呢?

c#中的阴影

我使用方法隐藏的唯一情况是当我想在派生类中返回派生类型时(这里从两个方法返回的实际对象应该是相同的)。当然,这只是c#缺乏结果类型协方差的一个hack。

了解何时使用覆盖和新关键字(c#编程指南)

使用new的确切含义是:不重写。

newonly效果是抑制关于隐藏基成员的编译器警告。它永远不会导致调用不同的方法。

对于多态性非常有用。

这篇文章可能是个好的开始。
Hasan Khan也发了一个很好的,我正要提到(不再需要)。
这篇文章可能也会有所帮助。