7

在我的子类中,我应该将继承的受保护非虚拟方法称为this.Method()orbase.Method()吗?

使用this将允许我使用同名的新方法轻松隐藏该方法。是否应该base仅在确定只需要专门调用基类的实现时才显式指定对方法的调用?

4

2 回答 2

7

如果你要添加一个Method在你的子类中命名的成员并且仍然想调用继承的方法,你应该使用base.Method(). 添加在更多派生类中命名的成员Method不会改变this.Method()调用的含义。

于 2013-05-02T22:00:41.500 回答
2

调用总是使用this.Method().

如果您隐藏该方法,您可能希望调用新方法而不是基类中的方法。另一方面,如果您将基类的方法设为虚拟,您可能希望代码以多态方式调用 if。

很难预测未来,但这些情况似乎更有可能发生。

于 2013-05-02T17:37:37.020 回答