初學筆記(C 委託)

2022-08-24 09:03:08 字數 1214 閱讀 2741

1.委託的概述

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

委託(delegate)是一種動態呼叫方法的型別,它與類、介面和陣列一樣,都屬於引用型。在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定義。

C 委託筆記

什麼是委託?宣告委託物件?建立委託物件?賦值委託?組合委託?為委託增加方法?從委託移除方法?呼叫委託?委託的例項?呼叫帶返回值的委託?呼叫帶引用的委託?匿名方法?lambda表示式?委託 有相同簽名和返回值型別的有序方法列表 1 方法的列表稱為呼叫列表 2 當委託被呼叫時,它呼叫列表中的每乙個方法 ...

C 委託(筆記)

委託 將方法作為引數進行傳遞的時候,需要利用到委託。如下例項 筆記 class bubble while swpped class employee 員工工資表 public string name public decimal money public static bool com employ...

C 筆記 委託

和類一樣,委託是使用者自定義的型別,但是類是資料和方法的集合,而委託是持有乙個或多個方法。delegate可以看做是乙個包含有序方法列表的物件,這些方法具有相同的簽名和返回型別。public delegate return type delegate name 關鍵字 返回型別 委託類簽名 引數列表...