zoukankan      html  css  js  c++  java
  • 在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler)[转帖]

    这个是我们熟悉的Page_Load()方法。实际上它是一个Event Handler,当定义在System.Web.UI.Page中的Load事件触发时,它开始执行。

    // use event handler
    protected void Page_Load(object sender, EventArgs e)
    {
        // logic here
    }


    这个是System.Web.UI.Page类中OnLoad()方法的Override。 // use override
    protected override void OnLoad(EventArgs e)
    {
        // logic here
        base.OnLoad(e);
    }
    虽然上述两种做法都能完成相同的功能,但是我推荐使用Override的做法。

    首先,事件处理机制是用来实现独立的对象之间通信的。例如,当一个Button被点击时,页面可以通过事件处理机制得知这一消息并进行处理。但在这 个例子中,Load事件定义在System.Web.UI.Page中,本身也是我们页面中的一部分。这样在一个类的内部发出事件并又在其本身处理这个事 件的做法将显得很奇怪。

    其次,效率上考虑,事件处理不及Override。这是由.NET Framework的实现所决定的并且我们都已经了解。

    还有,使用事件时需要维护两个地方:事件处理方法的加载(attach)以及事件处理函数本身的定义。虽然ASP.NET 2.0已经提供了一些预定义的事件处理方法名,但还有好多开发者在使用ASP.NET 1.1。而使用Override则只需要维护Override函数本身。

    当然,事件处理机制有它自身的好处,比如可以很方便的在运行时指定事件处理方法,允许分布在各处的多个事件处理方法依次执行。但在ASP.NET页 面中我们不会用到这些特性。我们总会有一个方法来定义页面被加载的行为,我们也不会有多个Page_Load()方法在一个页面中出现。

    更加泛化一点,不单单在ASP.NET页面中,其他情况下我们也应该尽可能的使用Override而不是Event。
    使用Override的时候需要注意的是不要忘记调用基类的方法(Visual Studio会替你做好的)。


    转自:http://www.xmsc.com.cn/InfoView/Article_84891.html

  • 相关阅读:
    2019-9-23-dotnet-判断特定进程存在方法
    2019-7-4-win10-uwp-处理用户点击关闭按钮
    2019-7-4-win10-uwp-处理用户点击关闭按钮
    2019-9-2-如何使用本模板搭建博客
    2019-8-31-dotnet-使用-System.CommandLine-写命令行程序
    2018-11-3-WPF-内部的5个窗口之-MediaContextNotificationWindow
    2019-4-7-VisualStudio-解决方案筛选器-slnf-文件
    2019-9-2-用自动机的思想说明光速
    2019-10-26-dotnet-core-发布只有一个-exe-的方法
    2018-2-13-win10-uwp-获取按钮鼠标左键按下
  • 原文地址:https://www.cnblogs.com/liangwei389/p/1207052.html
Copyright © 2011-2022 走看看