C#虚方法问题

Sna*_*ake 2 c# virtual-functions

有一件事我不太了解:当调用虚方法时,也调用基本方法?

因为当我使用公众覆盖的WinForm OnPaint方法,在它的身上base.OnPaint(五)被调用.我不明白,我认为虚拟方法会覆盖原始方法.如果它通常不被调用,为什么在这种情况下调用它?谢谢

ono*_*nof 11

不,如果您没有从派生类中明确调用它,则不会调用它.


Dan*_*nas 5

调用虚方法时,也调用基本方法?

没有.

因为当我使用公共覆盖OnPaint()时,在它的body base.OnPaint(e)中被调用.我不明白,我认为虚拟方法会覆盖原始方法.

开发人员选择调用base.OnPaint(e)并执行其他操作.换句话说,基本实现,你有你的手的情况下,这是对你有用的东西-你可以调用它,然后做一些额外的具体工作.

如果函数体只是对基数的调用,那么它将等同于根本不写入覆盖函数.