码迷,mamicode.com
首页 > 其他好文 > 详细

委托和事件

时间:2015-06-12 22:07:55      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

一.委托和事件:

问:C#中的委托是什么?事件是不是一种委托?事件和委托的关系?

解析1.委托是一种安全的函数指针,事件是一种消息机制;

      2.委托可以把一个方法作为参数传入另一个方法中;

    3.委托和事件没有可比性,因为委托是类型,事件是对象

     下面说的是委托的对象(用委托方式实现的事件)和(标准的event方式实现)事件的区别。事件的内部是用委托实现的。因为对于事件来讲,外部只能“注册 自己+=、注销自己-=”,外界不可以注销其他的注册者,外界不可以主动触发事件,因此如果用Delegate就没法进行上面的控制,因此诞生了事件这种 语法。事件是用来阉割委托实例的,类比用一个自定义类阉割List。事件只能add、remove自己,不能赋值。事件只能+=、-=,不能= 。

导入:在封装方法的过程中,我们知道,可以把变量,对象,等当参数进行传递,那能不能把方法当参数传递呢?

答:通过看第一道题知道,当然是可以的,下面就结合具体的例子看看委托和事件。

通过变量和对象传递参数:

 

 

技术分享

 

通过方法进行传递参数:

技术分享

 

二.通过具体案例感受一下委托和事件

注:事件其实也是一种特殊的委托,感兴趣可以通过反编译工具就可以看到委托和事件的原理是怎样的

技术分享

委托代码:

技术分享

 

事件代码基本与委托代码相同,下面将不同的地方进行列举修改:

技术分享

通过这个例子可以知道,通过委托很容易被扰乱,而通过事件就不会出现这种情况。

备注:委托和事件对于初学者可能是一道坎,比较难的理解!简单的介绍一下委托和事件。。。。。

 

委托和事件

标签:

原文地址:http://www.cnblogs.com/fengxuehuanlin/p/4572580.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!