總結幾點,方便以后復習:
<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調用鏈中的委托就會被串行調用,這樣我們就可以只調用一個方法,而多個相同簽名的方法就會同時被串行調用。