重写类中的派生成员
本文关键字:派生 成员 重写 | 更新日期: 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
。