zoukankan      html  css  js  c++  java
  • 委托与事件的关系

    委托与事件的关系

      委托与事件的关系,可参照字段跟属性的关系来理解。

      属性的一个功能就是设置字段,可以给字段设置权限。字段可以是值类型,也可以是引用类型,当然包括数组在内。那么委托呢?委托是把方法参数化,想要使用方法时直接使用就可以了(有时候要在不同的地方使用同一个方法,如果把方法的引用交给委托,要使用的时候直接让委托占位(委托去调用这个或这些方法),就方便多了)。

      声明一个委托:public deletate void MyDelegate();

      可以把委托当做一个容器(名片夹),里面装的是方法的引用(这里我们可以把方法理解为工具,而引用就相当于工具的一个名片来标识工具的位置),容器里可以装很多的名片夹(可以注册(+=)多个方法给委托),需要使用时,会按照名片的顺序来调用方法(多播委托)。

      一个委托类型的变量可以引用一个或多个方法。

      

     

        事件的本质就是对委托的封装,约束委托什么时候执行委托里面的方法(不然委托岂不是无法无天逍遥自在了),事实上事件也是对委托的一种安全保护,委托可以赋值,而事件是需要注册的。再者,事件可以定点定量的执行委托,

        委托可以赋值时因为委托本身装的就是方法的引用,引用本身就是一个“值”,裸露的值有可能被更改(如果委托被重新赋值,那么注册的方法的引用就都会被冲掉。+=是注册,而=是全部刷掉再赋新的值给引用),而事件只能注册。后续...........

     

    图解:

     

      《《当做笔记》》

     

  • 相关阅读:
    < java.util >-- Set接口
    Codeforces 627 A. XOR Equation (数学)
    Codeforces 161 B. Discounts (贪心)
    Codeforces 161 D. Distance in Tree (树dp)
    HDU 5534 Partial Tree (完全背包变形)
    HDU 5927 Auxiliary Set (dfs)
    Codeforces 27E. Number With The Given Amount Of Divisors (暴力)
    lght oj 1257
    Codeforces 219D. Choosing Capital for Treeland (树dp)
    Codeforces 479E. Riding in a Lift (dp + 前缀和优化)
  • 原文地址:https://www.cnblogs.com/newking/p/4375077.html
Copyright © 2011-2022 走看看