總結(jié)幾點(diǎn)募狂,方便以后復(fù)習(xí):
<1> delegate(委托) 是一個(gè)引用類型衫嵌,存儲(chǔ)了具有相同簽名的方法的地址晃听。
<2> delegate 的構(gòu)造函數(shù)不能為空唇聘。
<3>delegate的建立:
? ? int Max(int x,int y)
????{
? ? return x>y?x:y;
? ? }
? ? 1.delegate void MyDelegate(int a,int b);
? ? 2.MyDelegate md = new MyDelegate(Max); 或者是 MyDelegate md = mx;
<4>委托使用的注意事項(xiàng):
? ? 1.在C# 中璧亚,所有的委托都是從System.MulticastDelegate類派生的讨韭;
? ? 2.委托最大的作用就是為類的事件綁定事件處理程序;
? ? 3.委托實(shí)例中可以封裝靜態(tài)方法也可以封裝實(shí)例方法;
? ? 4.在創(chuàng)建委托實(shí)例時(shí)癣蟋,需要傳遞將要映射的方法或其他委托實(shí)例以指明委托將要封裝的函數(shù)原型(.NET中稱為方法簽名:signature)透硝。注意,如果映射的是靜態(tài)方法疯搅,傳遞的參數(shù)應(yīng)該是類名.方法名濒生,如果映射的實(shí)例方法,傳遞的參數(shù)應(yīng)該是實(shí)例名.方法名幔欧。
? ? 5.只有當(dāng)兩個(gè)委托實(shí)例所映射的方法以及該方法所屬的對(duì)象都相同時(shí)罪治,才認(rèn)為它們是相等的(從函數(shù)地址考慮)。
<5>MulticastDelegate類
? ? 1.MulticastDelegate類中可以包括一個(gè)委托的鏈表礁蔗,這個(gè)表中觉义,可以包括一個(gè)或多個(gè)元素(每個(gè)元素都是一個(gè)委托),我們可以將這個(gè)表稱為調(diào)用鏈浴井。
? ? 2.當(dāng)我們調(diào)用一個(gè)MultiDelegate的時(shí)候晒骇,位于該MultiDelegate調(diào)用鏈中的委托就會(huì)被串行調(diào)用,這樣我們就可以只調(diào)用一個(gè)方法磺浙,而多個(gè)相同簽名的方法就會(huì)同時(shí)被串行調(diào)用洪囤。