zoukankan      html  css  js  c++  java
  • 委托和事件的区别

    在这里,首先讲解委托:

      说到委托,肯定会接着想到“delegate ”,就我个人的总结就是:将方法作为参数传递。但是这个说法是错误的,因为委托本质上就是一个类型(class),我们通常传递的string 、int 等,也是一种类型,所以说,委托也能够传递了。
     写到这里,补充一下,
    Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型。
    Action 和Func 的区别:Action 是一种已经封装好的无返回值的委托,调用的时候,直接
    Action a= p => { };  //参数为int类型 无返回值的匿名函数
    Func是一种必须有返回值的委托。调用示例:
     Func func = () =>
                {
                    return 0;
                };    //无参数,返回值为int类型的委托
    注:两者都可以有参数或者无参数。
    委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
    然后讲解事件:
    首先,说明事件的由来。在我们使用委托的时候,总会使用 delegate=functionName(); 首次使用可以(“=”,是赋值语法),但是,如果多次使用,那么最终执行委托的时候,只能够执行最后一个函数,相当于把其他的函数弄丢了,所以,有一定的不安全性因素。那么,为了保证委托的安全性,从而出现了事件。简言之,事件就是为了保证委托使用的安全性产生的。事件的调用只能够使用“+=”和“-=”,所以,不会出现赋值现象,将其他的函数覆盖掉。
  • 相关阅读:
    PAT 解题报告 1009. Product of Polynomials (25)
    PAT 解题报告 1007. Maximum Subsequence Sum (25)
    PAT 解题报告 1003. Emergency (25)
    PAT 解题报告 1004. Counting Leaves (30)
    【转】DataSource高级应用
    tomcat下jndi配置
    java中DriverManager跟DataSource获取getConnection有什么不同?
    理解JDBC和JNDI
    JDBC
    Dive into python 实例学python (2) —— 自省,apihelper
  • 原文地址:https://www.cnblogs.com/kekelele/p/7357454.html
Copyright © 2011-2022 走看看