C# 重写类中的派生成员
当我重写父类中的事件时,例如System.Web.UI.Page中的OnLoad()方法,为什么仍然调用“base.OnLoad(e)”,但即使我移除对基类中重写方法的调用,加载事件仍然被激发C# 重写类中的派生成员,c#,events,C#,Events,当我重写父类中的事件时,例如System.Web.UI.Page中的OnLoad()方法,为什么仍然调用“base.OnLoad(e)”,但即使我移除对基类中重写方法的调用,加载事件仍然被激发 public partial class _Default : System.Web.UI.Page { protected override void OnLoad(EventArgs e) { base.OnLoad(e); } } 对base.OnLoad(
public partial class _Default : System.Web.UI.Page
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
}
}
对base.OnLoad(e)的调用可确保除了重写该方法的代码(而不仅仅是被重写的方法中正在执行的代码)之外,还可以调用该方法的基本实现中的所有内容
在任何一种情况下,它都不会影响事件是否成功触发。您的代码行
受保护的覆盖无效OnLoad(EventArgs e)
不会覆盖事件,因为OnLoad
不是事件。它正在重写System.Web.UI.Control
上定义的方法,该方法从System.Web.UI.Page
继承,表示引发Load
事件
如果OnLoad
的实现调用了base.OnLoad(e)
,您应该会发现引发了Load
事件
如果OnLoad
的实现没有调用base.OnLoad
,您应该会发现没有引发Load
事件
您几乎肯定要确保您正在呼叫
base.OnLoad
请澄清。你是说当你从OnLoad
方法中删除base.OnLoad(e)
时,它不会触发吗?是的,引发事件与处理它是不同的情况。