委托与事件的关系

  委托与事件的关系,可参照字段跟属性的关系来理解。

  属性的一个功能就是设置字段,可以给字段设置权限。字段可以是值类型,也可以是引用类型,当然包括数组在内。那么委托呢?委托是把方法参数化,想要使用方法时直接使用就可以了(有时候要在不同的地方使用同一个方法,如果把方法的引用交给委托,要使用的时候直接让委托占位(委托去调用这个或这些方法),就方便多了)。

  声明一个委托:public deletate void MyDelegate();

  可以把委托当做一个容器(名片夹),里面装的是方法的引用(这里我们可以把方法理解为工具,而引用就相当于工具的一个名片来标识工具的位置),容器里可以装很多的名片夹(可以注册(+=)多个方法给委托),需要使用时,会按照名片的顺序来调用方法(多播委托)。

  一个委托类型的变量可以引用一个或多个方法。

  

 

    事件的本质就是对委托的封装,约束委托什么时候执行委托里面的方法(不然委托岂不是无法无天逍遥自在了),事实上事件也是对委托的一种安全保护,委托可以赋值,而事件是需要注册的。再者,事件可以定点定量的执行委托,

    委托可以赋值时因为委托本身装的就是方法的引用,引用本身就是一个“值”,裸露的值有可能被更改(如果委托被重新赋值,那么注册的方法的引用就都会被冲掉。+=是注册,而=是全部刷掉再赋新的值给引用),而事件只能注册。后续...........

 

图解:

 

  《《当做笔记》》

 

posted on 2015-03-28 23:52  大水怪  阅读(938)  评论(0编辑  收藏  举报