在C#中有条件地调用重写的基本方法

Ral*_*veo 7 c# inheritance

我从未真正对这个问题做过准备:但是在重写方法中有条件地调用base.SomeMethod()会是一种可怕的犯罪吗?

示例如下:

protected override void SomeMethod()
{ 
     if( condition > 0 ) 
        base.SuperMethod(); 
}
Run Code Online (Sandbox Code Playgroud)

我知道这可能被认为是不好的做法但我到目前为止从未阅读过这样的说法.

kem*_*002 10

我无法想到为什么这会让我头疼的原因.

覆盖基本方法并将基本方法的功能复制到有条件调用而不是仅调用基本方法会更糟糕.


lep*_*pie 7

class HardHearingPerson : Person
{
  override void Listen() 
  { 
    if (volume.Acceptable()) 
      base.Listen(); 
  }
}
Run Code Online (Sandbox Code Playgroud)

猜测它取决于上下文,但我相信它可以合理使用.