[C#]委託執行個體分析

來源:互聯網
上載者:User

標籤:winform   使用   for   strong   on   代碼   as   時間   br   

  一直都聽說C#中的委託與事件非常重要,都沒有什麼切身的體會,而這次通過做一個WinForm二次開發的項目才真正感覺到了委託與事件的犀利之處。

1.C#中的事件和委託的作用?
  事件代表一個組件能夠被關注的一種訊號,委託是可以把一個過程封裝成變數進行傳遞並且執行的對象。
2.他們之間的關係?
  委託是一種類型,事件是一種成員,就相當於public int Age {get;set;}這個屬性中,int就是類型,Age是一個成員,public event EventHandler Push;這個事件中EventHandler就是委託類型,Push是事件,他是一個成員。
  事件從本質上來說是委託,不過在使用上比委託多了一個限制:事件只能在定義事件的類內部被調用,而委託可以在任意方法中被調用(難就難在理解這句)。
  我們基本上可以說:事件是委託,委託是方法指標,在調用委託的時候跟調用方法是一樣的。一般來說,這個限制正好用在封裝組件類的時候體現了封裝特性。
3.和什麼情況使用委託和事件?
  事件是組件中的抽象概念,同樣包括狀態和操作也是組件中的概念,對應到C#裡面就是屬性和方法。所以像控制項之類的組件都會有事件。而委託代表一個代碼的執行過程,C#3.0引入linq以後,用的就非常頻繁了。
4.但是用事件的方式來調用的話有什麼好處?
  事件是一種封裝,就好像屬性會封裝欄位一樣,可以把定義和實現隔離開來,給你舉個例子就是DateTime實際上你看那麼多屬性,其實裡面只有一個欄位儲存時間,各種日期啊年啊屬性都是根據這個時間算出來的。事件也把內部類型為一個委託的欄位封裝起來,這樣在類的外部就只能使用事件來註冊或者登出事件關注,而不能引發事件。

[C#]委託執行個體分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.