我正在看某人的代码,并且:
protected override void OnMouseEnter(MouseEventArgs e)
{
base.OnMouseEnter(e); //necessary?
if (...)
}
现在,问题是为什么要调用基类方法?无论如何,这段代码无需工作。任何想法?
感谢。 阿米特
答案 0 :(得分:3)
当您想要利用基本实现的功能但希望扩展派生类实现中发生的事情时,将使用基本调用。
这可以做一些非常有用的事情,比如设置在基类中定义的属性或处理事件,而不必在每个派生类中放置样板代码。
答案 1 :(得分:2)
因为基类方法具有您可能仍希望利用的默认行为。
答案 2 :(得分:1)
根据基类,可能还需要执行其方法以使其按预期运行。调用基本代码非常常见,因为它可能很重要,特别是如果你不知道它的作用。
答案 3 :(得分:1)
这在很大程度上取决于事件处理程序的作用。如果您的基类很复杂并且它在OnMouseEnter()
中执行了许多您仍想保留的内容,那么您应该进行base.OnMouseEnter(e)
调用。如果你想完全“覆盖”这个功能,意味着你知道base.OnMouseEnter(e)
做了什么而你不想要它,那就不要打电话给base.OnMouseEnter(e)
。