委托:委托是一种特殊的对象类型,不同于以往包含数据的类型,当要把方法a传送给方法b的时候,需要将方法a的方法细节封装到委托 中,而委托只包含了这个方法的地址,类似于C++中指针概念。
定义委托:delegate void method() 与定义正常使用的方法相同,只是添加了关键字delegate,但是他没有方法体;
1. 定义一个委托后可以将静态的或者正常的方法指定给他,只要这些指定方法的的签名匹配委托的定义就行。
多播委托:委托包含多个方法,使用+=对委托的方法进行添加,使用-=对委托的方法进行删除,使用时不能依赖定义时添加的顺序,如果 多个方法中的某个方法发生了错误,那么将停止执行。
听微软视频笔记
委托是函数份额封装,他代表一类的函数,他们都符合一定的签名:拥有相同的参数类表和返回值类型。同时,
委托也可以看成对函数的抽象没事函数的“类”,此时,委托的实例将代表一个具体的函数
为什么使用委 托:1.更加灵活的方法调用
2.用于异步回调
3.在多线程编程中使用委托来指定启动一个线程时调用的方法
4.C#中的事件模型。用他们指明处理给定事件的方法
1.异步回调:由于实例化委托是一个对象,所以可以将其座位参数进行传递,也可以将其赋值给属性,这样,
方法便可以将委托作为参数来接受,并且以后可以调用该委托。这称为异步回调,是在较长的进程
完成后用来通知调用方的常用方法。以这种方式使用委托时,使用委托的代码无需了解有关所用方法
的实现方面的任何信息
何时使用委托 何时使用借口
委托:1.当使用事件设计模式时。
2.当封装静态方法可取时。
3.当调用方不需要访问实现该方法的对象中的其他属性、方法、或接口时
4.需要方便组合。
5.当类可能需要该方法的多个实现时
借口:1.当存在一组可能被调用的相关方法时。
2.当类只需要方法的单个实现时。
3.当使用借口的类想要将该几口强制转换为其他的接口或类类型时。
多播委托:引用多个方法的委托,他连续调用每个方法。委托必须是同类型的,返回类型必须是void,
不能带输出参数(可以带引用参数)。多播委托应用于事件模型中。