C# 委托

總結幾點,方便以后復習:

<1> delegate(委托) 是一個引用類型,存儲了具有相同簽名的方法的地址。

<2> delegate 的構造函數(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>委托使用的注意事項:

? ? 1.在C# 中,所有的委托都是從System.MulticastDelegate類派生的;

? ? 2.委托最大的作用就是為類的事件綁定事件處理程序;

? ? 3.委托實例中可以封裝靜態(tài)方法也可以封裝實例方法;

? ? 4.在創(chuàng)建委托實例時,需要傳遞將要映射的方法或其他委托實例以指明委托將要封裝的函數(shù)原型(.NET中稱為方法簽名:signature)。注意,如果映射的是靜態(tài)方法,傳遞的參數(shù)應該是類名.方法名,如果映射的實例方法,傳遞的參數(shù)應該是實例名.方法名。

? ? 5.只有當兩個委托實例所映射的方法以及該方法所屬的對象都相同時,才認為它們是相等的(從函數(shù)地址考慮)。

<5>MulticastDelegate類

? ? 1.MulticastDelegate類中可以包括一個委托的鏈表,這個表中,可以包括一個或多個元素(每個元素都是一個委托),我們可以將這個表稱為調用鏈。

? ? 2.當我們調用一個MultiDelegate的時候,位于該MultiDelegate調用鏈中的委托就會被串行調用,這樣我們就可以只調用一個方法,而多個相同簽名的方法就會同時被串行調用。

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容