多播委托

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(多播委托中的方法);
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 多播委托中的方法调用的顺序与增加方法时的顺序是一致的。 多播委托中,如果其中的某个方法执行发生了异常,后面的方法不...
    风信子up阅读 734评论 0 1
  • 1. 定义: 让一个委托指向多个方法 给委托增加一个方法 a+= function 给委托去掉一个方法 a-=...
    元宇宙协会阅读 382评论 0 0
  • 1. 定义: 让一个委托指向多个方法 1. 给委托增加一个方法 a+= function 2. 给委托去掉一个方...
    silence_k阅读 469评论 0 2
  • iOS回调有Delegate,NSNotificationCenter,block,kvo。但是项目中回调 有种情...
    kuazi阅读 2,140评论 0 0
  • 里约奥运会已经结束了,这届奥运会中国军团获得了26金18银26铜,奖牌榜第三。有人总结近几届奥运中国获得奖牌的数量...
    范个江湖阅读 693评论 0 3