忽然想起delegate委托是支持+= 和-=操做的,而后研究一下究竟这个是怎么作到的,好模仿一下。一开始觉得是+=的运算符重载,可是在类库参考中并无这个运算符重载,只有!= 和==运算符重载。有点纳闷,最终发现,原来+=这些直接就是语法层面的实现,只是针对delegate才有的福利,因此也不存在模仿的可能性了。程序员
顺便就总结一下event事件和delegate委托的区别。这个区别有点相似字段和属性的不一样。好比接口能够有属性,可是不能有字段。为何?由于属性本质是方法,对字段进行了包装,这种包装有一点语法上的支持,在不一样上下文下,会有不一样的解释意义。函数
委托本质上是函数指针,是一个存储函数地址的变量,它很灵活,强大,这和字段同样,若是人们想要限制外部环境直接访问和控制委托,那么就能够经过event来达到这个目的。spa
固然,事件对委托的包装,添加了一层语义,那就是为了实现“事件模式”,若是你不想实现事件模式,那么就应该用普通函数来自定义这层包装。通常来讲,事件的套路很适合程序员的须要。指针
delegate | event |
赋值=接口 取值=事件 添加回调函数+=ci 移除回调函数-=回调函数 调用()event |
添加处理函数+=table 移除处理函数-= (若是没有单独定义事件的委托,在内部,事件能够等同委托来用) |
由于委托能够绑定多个函数,那么它的返回值到底是哪一个?返回值是它绑定的最后一个回调函数。