博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#多播委托详解
阅读量:5223 次
发布时间:2019-06-14

本文共 856 字,大约阅读时间需要 2 分钟。

包含多个方法的委托成为多播委托,调用多播委托,可以按照顺序连续调用多个方法,因此,委托的签名就必须返回void;

否则,就只能得到委托调用的最好一个方法的结果

1、多播委托可以用运算符"+"和"+="给委托添加方法调用,同样也可以用运算符"-"和"-="给委托删除方法调用

void Hello(string s)    {        System.Console.WriteLine("  Hello, {0}!", s);    }    static void Goodbye(string s)    {        System.Console.WriteLine("  Goodbye, {0}!", s);        throw new Exception("error");    }    Action
ac=Hello; ac+=Goodbye;

2、多播委托包含一个逐个调用委托集合,如果通过委托嗲用的其中一个方法抛出一个异常,整个迭代就会停止;、

为了避免这个问题,应该自己迭代方法列表。Delegate类定义GetInvocationList()方法,他返回一个Delegate
对象数组

void Hello()    {            }    static void Goodbye()    {            }    Action ac=Hello;    ac+=Goodbye;    Delegate[] delegates=ac.GetInvocationList();    foreach(Action action in delegates)    {     try     {      action();      }catch(Exception)     {    }    }

 

转载于:https://www.cnblogs.com/weicanpeng/p/8074093.html

你可能感兴趣的文章
MaxLength="12" />
查看>>
连续子数组的最大和
查看>>
CSS3实现曲线阴影和翘边阴影
查看>>
最小生成树算法
查看>>
SGU刷题之路,开始了
查看>>
2016年8月18日,我来到博客园了!
查看>>
JS高级程序随笔二
查看>>
EditPlus配置ftp连接linux
查看>>
app被Rejected 的各种原因翻译
查看>>
CentOS7下安装python-pip
查看>>
NSPredicate
查看>>
Android 查看和修改网络mtu
查看>>
SET-UID程序漏洞实验
查看>>
Maven浅析-2 什么是Maven
查看>>
"ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks" 笔记
查看>>
设计模式-策略模式
查看>>
浏览器静态资源的版本控制新思路.强制更新指定资源缓存.的探讨
查看>>
c# datagridview的使用
查看>>
IOS开发--第三阶段--Block(1)
查看>>
Python模块
查看>>