1. 定义: 让一个委托指向多个方法
1. 给委托增加一个方法 a+= function
2. 给委托去掉一个方法 a-= function
3. 多播委托的调用顺序,是按照添加方法的顺序来调用,先添加先调用。
4. 如果委托的方法有返回值,那么只能得到调用的最后一个方法的结果。
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的引用
// 如果一个委托没有指向任何方法,而去调用它,那么程序会crash。因此 最好在调用委托的方法的时候做一下判断
if(a!=NULL){
a();
}
}
获取多播委托中所有委托的方法
Action a1 = Method1;
a1 += Method2;
Delegate[] delegates = a1.GetInvocationList();
foreach(delegate d in delegates){ // 遍历所有委托,然后单独调用
d.DynamicInvoke(NULL);
}