用一个简单的例子来演绎事件委托
本篇博文,Insus.NET想使用一個超簡單的例子來演繹事件委托。
我們在開發網頁時,剛開始時在網頁的頂部放一個銨鈕(web control),想實現一個功能。
在xxx.aspx.cs:
OK,某一天,此網頁的內容隨時間而增長,出現了滾屏。想在網頁的底再放一個銨鈕,這個銨鈕執行事件跟網頁頂部銨鈕一的事件一樣的。
?
這樣子,不管是點擊按哪一個銨鈕,所執行的事件是一樣的:
也許一開始你并沒有想到onClick的事件名,直接使用銨鈕一的onClick的名稱,而是如下面的寫法:
在xxx.aspx.cs,我們會使用習慣的習慣,拷貝銨鈕一的事件粘貼在銨鈕二的事件里:
呵呵,此時網頁在運行時,點擊按鈕二與點擊銨鈕一執行的是相同的事情。
某一天,你回過頭來Review你寫的代碼,會發現代碼已經冗余了,你會建一個私有方法,把銨鈕一或二的事件代碼粘貼于這個方法內,然后在銨鈕一或二執行這個方法即可。
?
?上面好象沒有看到任何事件委托情形。沒有關系,我們稍改一下xxx.aspx寫法吧,在網頁中,不寫onClick事件,而是在cs中產生:
?
?
然后在xxx.aspx.cs:
此時,網頁運行起來,沒有什么不同。執行事件與效果跟前面動畫演示一樣。
我們再重新看看這個xxx.aspx.cs的代碼:
發現:
和
protected void Button2_Click(object sender, EventArgs e)
所執行的代碼完全一樣,只是這個事件名稱不同。
既然一樣,我們就可以跟上面重構方法一樣,定義一個相同的名稱,參照下面五個步驟:
最后再重構一步:
把xxx.aspx.cs所有注釋刪除,此時,我們看到了事件的委托:
轉載于:https://www.cnblogs.com/insus/p/3732075.html
總結
以上是生活随笔為你收集整理的用一个简单的例子来演绎事件委托的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux ab 命令
- 下一篇: 同样是面对失败的责任:任春雷比杜一楠更有