1. 定義: 讓一個委托指向多個方法
1. 給委托增加一個方法 a+= function
2. 給委托去掉一個方法 a-= function
3. 多播委托的調(diào)用順序衣形,是按照添加方法的順序來調(diào)用驼侠,先添加先調(diào)用。
4. 如果委托的方法有返回值,那么只能得到調(diào)用的最后一個方法的結(jié)果倒源。
static void Test1(){
Console.WriteLine("Test1");
}
static void Test2(){
Console.WriteLine("Test2");
}
static void Mian(string[] args){
Action a = Test1;
a += Test2; //表示增加一個委托引用
a();
// 輸出 Test1 Test2
a -= Test1; //去掉a對Test1的引用
a -= Test2; //去掉a對Test2的引用
// 如果一個委托沒有指向任何方法苛预,而去調(diào)用它,那么程序會crash相速。因此 最好在調(diào)用委托的方法的時候做一下判斷
if(a!=NULL){
a();
}
}
獲取多播委托中所有委托的方法
Action a1 = Method1;
a1 += Method2;
Delegate[] delegates = a1.GetInvocationList();
foreach(delegate d in delegates){ // 遍歷所有委托碟渺,然后單獨調(diào)用
d.DynamicInvoke(NULL);
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者