假设我有一个带有Page_load()事件处理程序的基页类,我在派生的页面类中也有一个Page_load()事件处理程序。我意识到你不必编写vitual或override关键字,编译器也不会检测错误。为什么是这样?为什么要执行基类版本?
答案 0 :(得分:2)
这些只是事件。
要覆盖,您需要使用OnLoad
上提供的Control
方法。
答案 1 :(得分:2)
尝试覆盖事件触发方法并调用自己的方法。我无法解释为什么它不抱怨两者,但我知道它们被添加到事件中,因此都在队列中被执行。
protected override void OnLoad(EventArgs e)
{
this.Page_Load(this, e);
}
除了执行队列中的所有事件处理程序之外,您在此处重写的方法不会做任何花哨的事情。请参阅下面反射器的片段:
protected internal virtual void OnLoad(EventArgs e)
{
if (this.HasEvents())
{
EventHandler handler = this._occasionalFields.Events[EventLoad] as EventHandler;
if (handler != null)
{
handler(this, e);
}
}
}
答案 2 :(得分:0)
我错了。确实存在关于遮蔽父类方法的警告,但它只是一个警告,而不是错误。