事件与委托

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事件与委托相关的知识,希望对你有一定的参考价值。

  记得当初刚学习.net的时候,觉得委托这块好难,好长一段时间都是会用非懂的状态,现在也用这么长时间了,就想着回顾一下基础,加深对于这块的了解。

  委托,简单点说,就是可以把函数做为参数供其他模块调用,类似于C++中的函数指针;

  public delegate void MyDelegate();

  委托简单就是在一个函数声明之前添加一个delegate关键字,这样便声明了一个委托类型,即一种特殊的类。该类是不可以继承的,通过ildasm可以很明白的看到这一点。并提供了两种调用方式,同步调用和异步调用。

技术分享

 

 

 

 

  而事件,则是在委托基础上加了一些限制。一种特殊的委托对象。其声明可以是:

        private static event MyDelegate Myevent;

技术分享

  其限制在于,事件的调用只能在声明事件的对象内部进行调用,外部只能对事件的委托链进行添加或删除方法,在声明对象的内部的使用与普通的委托对象的使用无异。

  .net中内置的委托主要有Func和Action,一个需要返回值,而另外一个不需要。一般来说,.net提供的这些委托类型已满足要求,不满足时,可以自定义。

技术分享技术分享

 

以上是关于事件与委托的主要内容,如果未能解决你的问题,请参考以下文章

事件与委托

C#编程之委托与事件四

直接事件与事件委托

理解Javascript中的事件绑定与事件委托

冒泡事件与事件委托

C# 再次理解委托事件与函数作为参数