C#委托理解(1)

# 委托 #
## 1、理解 ##
(1)委托类型用于定义和相应应用程序中的回调;
(2)使用回调,程序员可以使一个函数 返回报告给(即回调)另一个函数;
(3)委托是类型安全的对象,它指向程序中另一个以后会被调用的的方法。
## 2、定义委托 ##
(1)**使用delegate关键字
    如:public delegate int XXX(int a,int b);
     //定义了一个(可以指向任意方法)、
     //(返回一个int类型返回值)、
     //(接收两个int类型输入参数)的委托类型。 
(2)当C#编译器处理委托类型时,将自动产生一个继承自System.MulticastDelegate的**密封类XXX**以维护以后将要调用方法的列表。
(3)密封类XXX定义了三个公共方法:
    public sealed class XXX : System.MulticastDelegate
    {
      //以同步方式调用委托对象维护的每个方法
      public int Invoke(int a,int b);

      //以异步方式开始调用委托对象维护的每个方法
      public IAsyncResult BeginInvoke(int a,int b,asyncCallback cb,object state);

      //以异步方式结束调用委托对象维护的每个方法
      public int EndInvoke(IAsyncResult result);
    }
## 3、委托实例 ##
    //定义部分
    public delegate int XXX(int a,int b);
    public int Add(int x,int y)
    {
      return x + y;
    }
    //以下是控制台Main方法中的内容
    XXX d = new XXX(Add);
    Console.writeLine(d(10,11));
    //控制台显示结果
    21

 

说明:实际上d(10,11)实际上在内存中调用了Invoke()方法

 

# 4、泛型委托:Action<>和Func<> #
## 使用委托的三个步骤: ##
    1、自定义与方法Add匹配的委托XXX
    2、创建委托的实例:XXX d = new XXX(Add);
    3、调用委托对象的Invoke()方法来间接调用Add方法
## 使用Action<>委托: ##
    1、创建委托的实例:Action<int,int> d = new Action<int,int>(Add);
    2、调用委托对象的Invoke()方法来间接调用Add方法
缺点:Action<int,int>只能指向void返回值的方法
## 使用Func<>委托: ##
优点:相比Action<>,Func<>同时能指向void返回值的方法;Func<>的最后一个参数总是方法的返回值。
    
    1、创建委托的实例:
      Func<int,int,int> d = new Func<int,int,int>(Add);
    2、调用委托对象的Invoke()方法来间接调用Add方法:

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

碰碰qaq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值