委托与事件

  1. 委托要解决的问题:

    1. 函数传参:回调函数,linq表达式
    2. 基于委托声明事件,事件可以注册(按钮点击…)
  2. 委托本制是一个引用类型,所以可以实例化

  3. 委托是一个函数指针

  4. 事件和委托最大的区别是: 对于委托来说,任何能得到这个委托引用的代码都可以调用它的Invoke方法来。 而事件只能在其被定义的类里才能调用Invoke,这个类的子类都不可以!event其实就是限制委托的invoke不能被乱调用,就是起到安全作用

  5. 事件最重要的安全性居然没提到太不应该了。 事件和属性是类似的东西。属性是对字段进行封装,而事件是对特殊用途的委托类型的字段进行封装。属性本质是两个方法,也就是两个访问器(get,set),在使用自动属性的时候会自动生成一个私有字段;而事件本质上也是两个方法(add,remove),声明自动事件的时候也会自动生成一个私有字段,并且和事件完全同名

  6. 事件除了保护委托不让外部查看调用列表、移除其他委托、不能赋空、不能调用等保护作用外,没有其他作用

  7. 事件是对委托的一种封装

  8. 事件说白了是 C# 提供的语法糖,效果是: 1.将委托以私有变量的形式封装在类内,不让外面访问 2.对于委托进行了封装,从而定义add与remove 方法 3.在 add 与 remove 中通过互锁的方式提供了线程安全性

Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计