event 和delegate的分别


忽然想起delegate委托是支持+= 和-=操做的,而后研究一下究竟这个是怎么作到的,好模仿一下。一开始觉得是+=的运算符重载,可是在类库参考中并无这个运算符重载,只有!= 和==运算符重载。有点纳闷,最终发现,原来+=这些直接就是语法层面的实现,只是针对delegate才有的福利,因此也不存在模仿的可能性了。程序员

顺便就总结一下event事件和delegate委托的区别。这个区别有点相似字段和属性的不一样。好比接口能够有属性,可是不能有字段。为何?由于属性本质是方法,对字段进行了包装,这种包装有一点语法上的支持,在不一样上下文下,会有不一样的解释意义。函数

委托本质上是函数指针,是一个存储函数地址的变量,它很灵活,强大,这和字段同样,若是人们想要限制外部环境直接访问和控制委托,那么就能够经过event来达到这个目的。spa

固然,事件对委托的包装,添加了一层语义,那就是为了实现“事件模式”,若是你不想实现事件模式,那么就应该用普通函数来自定义这层包装。通常来讲,事件的套路很适合程序员的须要。指针

delegate event

赋值=接口

取值=事件

添加回调函数+=ci

移除回调函数-=回调函数

调用()event

添加处理函数+=table

移除处理函数-=

(若是没有单独定义事件的委托,在内部,事件能够等同委托来用)


由于委托能够绑定多个函数,那么它的返回值到底是哪一个?返回值是它绑定的最后一个回调函数。

相关文章
相关标签/搜索