在ASP.NET頁面中推薦使用覆寫(Override)而不是事件處理(Event Handler)

來源:互聯網
上載者:User

English Version: http://dflying.dflying.net/1/archive/101_prefer_overrides_to_event_handlers_in_aspnet_page.html

這個是我們熟悉的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會替你做好的)。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.