public static void text1()
{
Console.WriteLine("text1");
}
public static void text2()
{
Console.WriteLine("text2");
}
Action a =text1; //Action委托方法a指向了text1这个方法
a+=text2;//添加了text2方法,同时又指向了text2这个方法
//同时指向多个方法的委托叫多播委托
a-=text1;//删除了text1这个方法
//当一个委托没有指向任何方法时会抛异常,解决办法是先判断一下委托方法是否为空
if(a!=null)
a();
//多播委托只能得到调用的最后一个方法的结果。一般把多播委托的返回值设为空(void);如果多播委托里有一个方法抛异常,那么其余方法也不去执行
//得到一个多播委托内的所有方法的委托。可以用GetinvocationList()这个方法去得到多播委托内的所有方法,然后单独调用每一个方法
Delegate[]delegates=a.GetinvocationList();
foreach(Delegate item in delegates)
{
item.DynamicInvoke(多播委托中的方法);
}
网友评论