.NET中所谓的事件Event和委托(新手看看就行了)

不少书中喜欢把委托和事件放到一个高度上来讲述,这就造成了初学者会对这两者关系产生疑惑,委托和事件似乎没什么区别。

其实.net中的事件就是微软提供给我的语法糖,目的是为了减少代码量,其实事件的相关功能都能用委托做出来。

 

Code

 

Person中采用的是触发事件来通知调用者,我的工作做完了. WorkEnd就是事件

Person1中没用事件,纯粹的委托方法,完全达到了事件的目的.

如果你用IL 反汇编程序看下生成的代码 你会发现我Person和Person1中的代码是类似的

实际上我的Person1就是模拟了CLR自动生成的委托代码,你在Person看到那个WorkEnd事件,在被编译的时候就是自动生成了私有变量委托,和add_ remove_ 方法

采用事件写的代码 减少了代码量 好处就是这个 比如这里的

Code

用一句

public event PersonWorkHandle WorkEnd;

就能代替

 

另外注册事件处理程序的时候可以很方便的用+=运算符

 

总之,事件就是委托的一个特殊应用罢了,没什么神秘的地方

 

posted @ 2009-07-02 13:11  supercpu  阅读(2457)  评论(26编辑  收藏  举报