• C#中的委托与事件并存的理由


     

    问题

    有了委托为什么还要有事件?

    理论上,事件能完成的事情委托完全可以胜任,但是我们思考的这一方面是功能性,我们必须从他们各自的特点分析。

    委托链的特点让事件能够被多个订阅方订阅,事件是带上了event关键字的委托,在用reflector反编译事件源码时,我

    们看到事件成员的可访问性被始终设置为private,其订阅和移除事件靠方法来完成。

    所以,他们的区别出现了:

    委托可被任意调用者修改,甚至抹去所有的委托连,而对于事件,只能由订阅者自己决定订阅或者移除事件。

    事件的密封性较好,他从本质层面上反映出了事件是属于发布者的,订阅者只能决定自己订阅的事件,不能影响发布者

    的所有订阅对象。你为了反映这一事实,就不能使用委托来替代。

  • 相关阅读:
    Codeforces Round #171 (Div. 2)
    ACdream 1079 郭式树
    HDOJ 1517 博弈论
    ACdream 1080 面面数
    博弈论 Nim 博弈
    Codeforces Round #172 (Div. 2)
    ACdream 1084 同心树
    STL bitset
    博弈论 bash博弈
    POJ 3261 后缀数组
  • 原文地址:https://www.cnblogs.com/denghejun/p/3796936.html
Copyright © 2020-2023  润新知