覆盖类中的派生成员

时间:2011-08-17 21:07:13

标签: c# events

当我从父类重写事件时,例如System.Web.UI.Page中的OnLoad()方法,为什么仍然调用“base.OnLoad(e)”,但即使我删除了对在基类中重写的方法,仍然会触发Load事件?

public partial class _Default : System.Web.UI.Page
{
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
    }
}

2 个答案:

答案 0 :(得分:2)

对base.OnLoad(e)的调用确保除了覆盖该方法的代码之外,还调用方法的基本实现中的所有内容(而不是仅执行重写方法中的代码)。

在任何一种情况下,它都应该与成功解雇的事件无关。

答案 1 :(得分:0)

您的代码行protected override void OnLoad(EventArgs e)未覆盖事件,因为OnLoad不是事件。它覆盖了System.Web.UI.Control上定义的方法,System.Web.UI.Page继承了该方法,MSDN表示会引发Load事件。

如果您OnLoad调用base.OnLoad(e)的实施,您会发现Load事件已被提出。

如果您OnLoad的实施没有调用base.OnLoad,您会发现Load事件未被提升。

您几乎肯定想确保拨打base.OnLoad