zoukankan      html  css  js  c++  java
  • event 和delegate的分别


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

    顺便就总结一下event事件和delegate委托的区别。这个区别有点类似字段和属性的不同。比如接口可以有属性,但是不能有字段。为什么?因为属性本质是方法,对字段进行了包装,这种包装有一点语法上的支持,在不同上下文下,会有不同的解释意义。

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

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

    delegate event

    赋值=

    取值=

    添加回调函数+=

    移除回调函数-=

    调用()

    添加处理函数+=

    移除处理函数-=

    (如果没有单独定义事件的委托,在内部,事件可以等同委托来用)


    因为委托可以绑定多个函数,那么它的返回值究竟是哪个?返回值是它绑定的最后一个回调函数。

  • 相关阅读:
    apache安装
    docker搭建redis主从
    docker安装
    sklearn工具-绪论
    数学基础-矩阵和线性代数
    数学基础-概率论与贝叶斯先验
    数学基础-数学分析
    数据科学包——Matplotlib
    数据科学包——pandas
    数据科学包——numpy
  • 原文地址:https://www.cnblogs.com/Nobel/p/9516249.html
Copyright © 2011-2022 走看看