C#的委託

以前本人一直在寫一些相對比較基礎的C#代碼,如今作了一段時間項目了,遇到更麻煩的問題,好比今天要討論的委託和事件,這個算是C#進階篇的內容吧。如今本身就把這些天所學習的和本身所理解的和你們分享。有錯請指正。工具

委託學習

顧名思義,委託就相似於中介,你創建它後,它一直在那兒,而後你可讓它去作不一樣的事,本質來講委託就是一個用來作事的工具。可是須要注意的是否是全部的事都能讓委託去作,這些事要有相同的特徵,好比和委託有相同的參數。好啦,我們仍是Demo說話吧spa

新建一個控制檯項目3d

image

而後咱們首先在項目定義一個委託,其實委託也算得上是一個類,屬於引用類型(iint 等屬於值類型,存儲空間爲堆棧,引用類型存儲空間爲堆),因此咱們處理委託的時候能夠直接把它像類同樣處理,只是聲明的時候不一樣的一點就是,要寫出參數。blog

image

接着咱們新建一個方法,這個方法就是咱們須要這個委託,也就是這個中介去作的事。注意咱們要讓這個方法的參數類型和個數與委託一致,由於你不能讓一個賣房子的中介去幫你幹買車的事,對吧!事件

image

最後咱們就來用委託吧,前面我有說過委託幾乎相似一個類,咱們要使用委託就得實例化了,而且咱們這個時候得告訴它咱們須要這個中介作什麼事了。get

image

注意一下此時傳的參數是方法,而不是平時的什麼int double類型。這也是委託的精髓所在。而後能夠看到代碼裏面我隨後就使用了委託,給handler傳入了一個博客

int類型的參數,由於咱們以前定義委託的時候就指定了須要一個參數,類型爲int。it

如今我們來看看最後輸出的結果吧,驗證一下!!!基礎

image


如今咱們算是瞭解了最基礎的委託,接着咱們仍是來看看多路廣播委託,其實也就是讓這個中介一次幫咱們作多個事情。要是不能一次作多個事,咱們要這個中介幹嗎,還不如本身直接把這件事作了。

咱們先添加兩個事情吧。

image

咱們如今再告訴中介也要作這兩件事

image

咱們用+=的方式來給他添加須要作的事,這個時候委託的內部有一個鏈表,能夠不斷地添加和刪除要作的事(刪除爲-=),相似於list的操做。

如今咱們來看一下運行結果吧

image

如今咱們來總結一下委託吧

委託主要分爲三步:

一:定義一個委託

二:須要作的事情

三:把事情經過參數形式傳給委託

 

最後就是使用委託啦!!!

 

PS:今天因爲時間很少,只能暫時簡單寫寫委託,你們要更深刻了解委託更細節的東西的話,能夠去園子裏的其餘博客看看,有不少優秀的帖子。

下次我也會接着和你們分享一下在委託的基礎上,我對於事件的理解。

相關文章
相關標籤/搜索