1、宣告委託語法形式:
關鍵字:delegate名字:委託名,必須標示符的命名規則。他可以有返回值,也可以引數。==?是不是就是乙個方法?
他的本質上是乙個類。怎麼證明他就是乙個類呢?詳解:如上就宣告了乙個委託,名字是mydelegate。同時該委託具有返回值,以及引數。也就是說,宣告委託可以是多樣的,比如沒有返回值,或者是沒有引數,或者是具有多個引數。
2、例項化委託
一旦宣告了委託型別,委託物件必須使用new關鍵字來建立,且與乙個特定的方法有關。
當建立委託時,傳遞到new語句的引數就像方法呼叫一樣書寫,但是不帶有引數。
引數是什麼??引數就是方法名,並且不帶括號和括號內的引數。
在建立例項的時候,建構函式裡接受的引數就是乙個方法名;但是這裡並沒有像我們之前所學習的方法一樣,直接就呼叫了。什麼時候呼叫這個方法,或者這個方法什麼時候執行??
3、多播委託委託
物件可使用"+「運算子進行合併。乙個合併委託呼叫它所合併的兩個委託。只有相同型別的委託可被合併。」-"運算子可用於從合併的委託中移除元件委託。使用委託的這個有用的特點,您可以建立乙個委託被呼叫時要呼叫的方法的呼叫列表。這被稱為委託的多播(multicasting),也叫組播
「+=」 : 對應 combine()
「-=」:對應 remove()
詳解:在移除時應注意兩點,第一是否滿足是否是同乙個方法,第二是否滿足target值是否一致。
執行**檢視委託的呼叫結果:
using system;
using system.collections.generic;
using system.text;
--");}
public
void
show()
--");}
);nom2.
invoke
("用委託的方式呼叫方法",2
);//lambda
--");}
);nom3.
invoke
("用委託的方式呼叫方法",3
);}// lambda => 的 左側 引數可以省略引數型別,編譯器會自動推斷引數型別
--");}
);nom4.
invoke
("用委託的方式呼叫方法",4
);}//直接方法體
--");}
);nom4.
invoke
("用委託的方式呼叫方法",5
);}// t=>1 就是 t=1
//action 是無返回值的委託
// 不用定義委託,因為。net已經內建定義了委託
action<
string
> action =
(n)=
>")
;};// func必須帶有返回值,
func<
string
> func =()
=>
"ad";}
}public
delegate
void
noreturnmoreparammethod
(string name,
int i)
;}
using system;
using system.collections.generic;
using system.text;}}
}
C 知識點總結 委託篇
c 知識點總結1 委託篇 1 委託概念 當要把方法傳送給其它方法時,需要使用委託。委託是一種特殊的引用型別,用於封裝命名方法 靜態或例項 或匿名方法。委託的作用相當於給方法簽名指定名稱。使用delegate關鍵字來宣告乙個委託引用型別,這種特殊的引用型別稱為委託。2 定義委託 告訴編譯器某個委託引用...
Elasticsearch應用必備知識點
本文介紹elasticsearch實際應用中常用的一些知識內容,包括資料型別介紹 動態模板等。elasticsearch支援多種資料型別,常見核心型別包括 string text和keyword numberic scaled float 需要指定scaling factor為100,2.34,儲存...
Elasticsearch應用必備知識點
本文介紹elasticsearch實際應用中常用的一些知識內容,包括資料型別介紹 動態模板等。elasticsearch支援多種資料型別,常見核心型別包括 string text和keyword numberic scaled float 需要指定scaling factor為100,2.34,儲存...