C# 委托

總結(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í)例所映射的方法以及該方法所屬的對象都相同時(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)用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容