委托

1.C#委托与C++中函数指针的关系

       从功能实现角度来看,委托和函数指针是一样的。但是C#之所以没有使用函数指针 ,是因为指针是不安全的,所以C#使用了一个叫做委托的东西。委托在内部封装了函数指针,所以使用委托可以达到和函数指针一样的效果。委托的强大之处不仅仅在于此,他还是类型安全的,可验证的。

2.委托的内部构造

      所有的委托都隐式继承于System.MulticastDelegate类,而这个类又派生于System.Delegate。委托没有字段,事件和属性,只有实例方法,要么是两个,要么是4个,这些方法都是又编译器自动生成的。

      看如下代码:

delegate void MyDelegate();

编译器会自动生成如下的实现:


     可以看到,编译器自动生成了一个一个叫做MyDelegate类,这个类继承与MulticastDelegate。这个类中含有一个.ctor实例构造函数,他有两个参数,一个接受对象的引用,一个接受方法的元数据标记。编译器还自动生成了一个叫做Invoke的方法,此外还有两个关于异步调用的方法BeginInvoke和EndInvoke。

    

3.委托与异步


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值