重写类中的派生成员

本文关键字:派生 成员 重写 | 更新日期: 2023-09-27 18:06:01

当我覆盖来自父类的事件时,例如System.Web.UI中的OnLoad()方法。Page,为什么"base. onload (e)"仍然被调用,但即使当我删除对基类中被覆盖的方法的调用时,Load事件仍然被触发?

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

重写类中的派生成员

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

在这两种情况下,它应该与事件是否成功触发无关。

您的代码行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