从派生类调用基类的方法时,是否应该使用'base'关键字?似乎使用base关键字会增加代码的可读性,但对我来说,到目前为止,当我排除它时,对代码编译和执行没有任何影响.
Ste*_*ger 13
重写方法时,base关键字很重要:
override void Foo()
{
base.Foo();
// other stuff
}
Run Code Online (Sandbox Code Playgroud)
我从来没有用它做任何其他事情.
你不应该使用base除非你特别指的是"即使这个类中有一个方法覆盖了基本实现,我想调用基类实现并忽略这个类上的那个".
使用base绕过虚拟调度机制,这种机制在多态性中非常重要,因为它会导致发出call指令而不是callvirt.
所以说句base.Foo()在语义上非常非常不同this.Foo().你几乎总是想要后者.