初學筆記(C#委託)

來源:互聯網
上載者:User

標籤:使用   strong   資料   sp   代碼   on   c   ad   new   

1.委託的概述

      簡單說,委託就是把方法當作參數傳遞。

      委託(delegate)是一種動態調用方法的類型,它與類、介面和數組一樣,都屬於引用型。在C#中,可以申聲明委託類型、建立委託執行個體、把方法封裝在委派物件中。一個完整的飯否發具有方法名、傳回值和參數列表,用來引用方法的委託也要求必須具有相同的傳回值和參數列表。

     委派物件的本質代表了方法的引用(即記憶體位址),具有以下特點:

  • 與C++中的指標相似,但不同的是委託是完全物件導向的,是安全的資料類型。
  • 委託允許將方法作為參數傳遞。
  • 委託可用回呼函數。
  • 委託可以把多個方法連在一起。可在觸發事件時,啟動多個事件處理常式。

2.委託的聲明、執行個體化與使用

  2.1委託的聲明

      委託是一種引用型的資料類型,在C#中使用關鍵字delegate聲明,一般形式如下:

        [存取修飾詞] delegate 傳回值類型 委託名([參數列表])

  2.2 委託的執行個體化

    委託是一種特殊的資料類型,因此必須執行個體化之後才能用來調用方法。一般形式如下:

         委託類型   委託變數名=new 委託型建構函式(委託要引用的方法)

  2.3 使用委託

    執行個體化之後,就可以通過委派物件調用它所引用的方法。使用委派物件調用所有所有的方法時,必須保證參數的類型、個數、順序和方法聲明匹配。

  2.4使用匿名方法

       允許將代碼塊作為參數傳遞,以避免單獨定義方法,使用匿名方法建立委派物件的一般形式如下:

         委託類型 委託變數名=delegate([參數列表]){//代碼塊}

3.多路廣播與委託組合

        實際上,C#允許使用一個委派物件調用多個方法,當向委託添加更多的指向其他方法的引用時,這些引用將被儲存在委託的調用列表裡,這種委託叫多路廣播委託。C#的所有委託都是隱式的多路廣播委託。向一個委託的調用列表添加多個方法引用,可以通過該委託一次性調用所有的方法,這個過程稱為多路廣播。

   實現多路廣播的方法有兩種:

  • 通過“+”運算子直接將兩個同類型的委派物件組合起來。

        例如:

         假設有一委託Calculate

           Calculate  a=new Calculate(Add);

           Calculate b= new Calculate(Mulipty);

           a=a+b;

       由於一個委派物件只能返回一個值,且只返回調用列表中最後一個方法的傳回值,因此為了避免混淆,建議在使用多路廣播時,每個方法均用void定義。

  • 通過“+=”運算子將新建立的委派物件添加到委託調用列表zhong。還可以使用“-=”運算子來移除調用列表中的委派物件。

 

初學筆記(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.