Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重写类中的派生成员_C#_Events - Fatal编程技术网

C# 重写类中的派生成员

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(

当我重写父类中的事件时,例如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(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)
时,它不会触发吗?是的,引发事件与处理它是不同的情况。