什么是多播委托?
2015-07-06 14:51
746 查看
说明:1、多播委托就是对一个声明的委托Mydelegate进行多个同类型的方法的赋值;
2、用委托将这些方法进行,依次的调用;
3、可以对这些方法进行委托的添加 比如:mdl+=T1;
4、可以对这些方法进行委托的移除 比如:mdl-=T1;
5、委托用之前还要判断是否为空;(很重要!)
1、使用委托的两种写法:
2、当然还可以进行添加,和,移除方法
mdl += T2; //可以添加
mdl += T3;
mdl -=T2; //可以移除
3、委托用之前,需要判断是否为null,
附:
多播委托链
1、问题:多播委托如何处理返回值?
回答:多播委托会只将最后一个委托方法的结果输出来;
2、验证:
2、一个重要的方法GetInvocationList();//返回一个Delegate[]类型。Delegate类是一个抽象类,是所有委托的父类。
3、组合的委托必须是同一个类型
:
4、相当于创建了一个按照组合的顺序依次调用的新委托对象。
5、委托的组合一般是给事件用的,用普通的委托的时候很少用
2、用委托将这些方法进行,依次的调用;
3、可以对这些方法进行委托的添加 比如:mdl+=T1;
4、可以对这些方法进行委托的移除 比如:mdl-=T1;
5、委托用之前还要判断是否为空;(很重要!)
1、使用委托的两种写法:
第一种写法: MyDel mdl = new MyDel(T1); 第二种写法: MyDel mdl = T1;//第二种写法,其实方法是一样的,反编译工具看,=后边也是被new 出来的
2、当然还可以进行添加,和,移除方法
mdl += T2; //可以添加
mdl += T3;
mdl -=T2; //可以移除
3、委托用之前,需要判断是否为null,
if (mdl!=null)//4、委托用之前,需要判断是否为null,这个很重要的!! { mdl(); }
附:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 多播委托 { //2、定义委托 public delegate void MyDel(); class Program { static void Main(string[] args) { //3、第一种写法: // MyDel mdl = new MyDel(T1); MyDel mdl = T1;//第二种写法,其实方法是一样的,反编译工具看,=后边也是被new 出来的 mdl += T2; //可以添加 mdl += T3; mdl -=T2; //可以移除 if (mdl!=null)//4、委托用之前,需要判断是否为null,这个很重要的!! { mdl(); } Console.ReadKey(); } //1、先定义三个方法 T1、T2、T3 public static void T1() { Console.WriteLine("第一个方法"); } public static void T2() { Console.WriteLine("第二个方法"); } public static void T3() { Console.WriteLine("第三个方法"); } } }
多播委托链
1、问题:多播委托如何处理返回值?
回答:多播委托会只将最后一个委托方法的结果输出来;
2、验证:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 多播委托链 { //2、定义委托 public delegate int Mydel(); class Program { static void Main(string[] args) {//调用 Mydel mdl = D1; mdl += D2; mdl += D3; if (mdl!=null) { mdl(); } Console.WriteLine(mdl());//可以看到这里只是打印出来了第三个方法的结果 Console.ReadKey(); } //1、先定义三个有返回值的方法 public static int D1() { return 1; } public static int D2() { return 2; } public static int D3() { return 3; } } } F11逐步调试,mdl是先被赋值上方法T1、T2、T3、,最后又按顺序再调用了方法,T3方法是最后执行的。
总结:
1、委托绑定多个方法后,其中一个方法执行发生异常后面的方法还会继续执行吗?不会!2、一个重要的方法GetInvocationList();//返回一个Delegate[]类型。Delegate类是一个抽象类,是所有委托的父类。
3、组合的委托必须是同一个类型
:
4、相当于创建了一个按照组合的顺序依次调用的新委托对象。
5、委托的组合一般是给事件用的,用普通的委托的时候很少用
相关文章推荐
- ngrok开源软件
- (Apache+Tomcat+mysql)(集成环境)+花生壳2.2
- 什么是匿名委托?
- 什么是委托?
- 第2章 C#程序设计基础
- 第1章 ASP.NET4.0开发技术概述
- listview
- 求出目录的大小
- Android App集成支付宝
- 城市的三级联动
- 查看IIS上面的每个网站分别用了多少内存
- C++ Bit Fields
- javascript
- jQuery的笔记
- 3月3号 阶段性考试 IO
- 面试常考题---交换变量
- C3第 1 节: 泛型集合及练习
- C2第 1 节值类型引用类型介绍和字符串练习
- C1第 1 节: 面向对象类的介绍和继承
- B7第七章第 1 节: ADO.Net简介