天天看点

C#面向对象(五)委托

委托

定义

委托是方法的代理,委托代表方法,调用委托就是调用了这个方法。委托是一种数据类型。

委托的使用

  1. 定义委托

    public delegate void Handler();

  2. 实例化委托

    Handler handler = new Handler(Func);

  3. 调用委托

    handler();

委托的分类

单播委托:一个委托对象只关联一个方法。

多播执行:一个委托对象关联多个方法,如果委托有返回类型不适合用多播执行。

实例化委托的写法

  1. Handler handler = new Handler(F);
  2. Handler handler = F;
  3. Handler handler = delegate(参数类型 参数名){}
  4. Handler handler = Lamda表达式;

委托的异步调用

步骤:

1. 为需要异步调用的方法定义一个相应的委托

2. 创建该委托的引用指向需要异步调用的方法

3. 使用委托类型的BeginInvoke方法开始异步调用

a) BeginInvoke中的参数IAsyncCallback 表示异步调用的方法结束时执行的回调方法,往往用回调方法来处理异步的结果

b) BeginInvoke中的参数object 表示在回调方法中需要用到的数据,该数据被封装在IAsyncResult的AsyncState属性中。

4. 如方法有返回值,则需要调用EndInvoke取得返回值