当你重写一个方法时,你不应该改变方法的行为,你只是专门化它。因此,您必须调用base.MyVirtualMethod()
被覆盖的方法并添加专门化代码。
但我总是想知道什么时候必须调用base.MyVirtualMethod()
. 或者从另一个角度来看,我如何编写我的虚拟方法?我应该期望用户将其称为被覆盖方法所做的第一件事还是最后一件事?
public class Parent
{
public virtual void MyMethod(){ /* Some code*/ }
}
public class Child : Parent
{
public override void MyMethod()
{
/* Does my code goes here? */
base.MyMethod();
/* Or does my code goes here? */
}
}