VirtualMJ

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
 

委托是一种引用方法的类型,一但为委托分配了方法,委托将与该方法具有相同的行为,委托方法的使用可以象其他方法一样,具有参数和返回值。

一个委托 delegate object 可以搭载多个方法,而不是一次一个,当我们唤起一个搭载多个方法的委托的时候,所有的方法,将以其被“搭载到delegate object的顺序”依次被唤醒执行。

一个委托 delegate object 所搭载的方法并不需要属于同一个类。一个委托delegate object所搭载的方法必须具有相同的原形和形式。然而这些方法可以是static 也可以是no static,可以由一个或者多个不同的类成员组成。

一个 delegate type 的声明在本质上创建了一个新的 subtype instance,该subtype派生与.net .library frameworkabstract base class delegate 或者 multicastdelegate,他们提供一组public method 用语访问delegate object或其搭载的方法。

自己定义:

委托是函数的封装,它代表一类函数。他们都符合一给定的签名:拥有相同的参数,列表,返回值类型。同时委托也可以看作是对函数的抽象,是函数的类,因此,委托的实力将代表一个具体的函数。

 

为什么使用委托

1. 更加灵活的方法调用。

2. 用于异步回调。

3. 多线呈编程中使用委托方法来指定启动一个线呈时回调的方法。

4. C#的事件模型。用它们指明处理给定事件的方法。

 

委托的定义:<modifiers> delegate <trun_type> <delegate_name> <argument_list>

public delegate void Del(string message);

public void DelegateMethod(string message)

{

                     Console.WriteLine(message);

}

Del handler = new Del(obj.DelegateMethod)

Handler(“Hellow World”);

异步回调:由于实例化委托是一个对象,所以可以将其作为参数进行传递,也可以将其赋值给属性。这样方法便可以将一个委托做为参数来接受,并且以后可以调用该委托。这样城为异步回调。是在较长的过程完成后用来通知调用方法的常用方法。以这种方式使用委托时,使用委托代码无需了解有关所用方法的实现方面的任何信息。

 

多播委托

       引用多个方法的委托,它连续调用每个方法。委托必须是具有相同类型,返回值必须是void,不能带参数(可以带引用参数),多播委托应用与事件模型中。

委托是一类方法,委托实例将指向特定的方法。
posted on 2007-03-16 13:00  小马过河MJ  阅读(480)  评论(0编辑  收藏  举报