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(); 首次使用可以(“=”,是赋值语法),但是,如果多次使用,那么最终执行委托的时候,只能够执行最后一个函数,相当于把其他的函数弄丢了,所以,有一定的不安全性因素。那么,为了保证委托的安全性,从而出现了事件。简言之,事件就是为了保证委托使用的安全性产生的。事件的调用只能够使用“+=”和“-=”,所以,不会出现赋值现象,将其他的函数覆盖掉。
  • 相关阅读:
    硬件开源为什么如此之难?
    传智播客C++
    为什么我们要在指针前面加一个数据类型来限定那?
    天津大学仁爱学院教务网、图书馆以及数字化平台网址
    关于小米手机USB传输稍大点的文件老中断的问题解决方法!
    关于接地:数字地、模拟地、信号地、交流地、直流地、屏蔽地、浮地
    关于
    Android-APK签名
    Android-Activity跳转时动画
    Android-GridView 滑动条设置一直显示状态
  • 原文地址:https://www.cnblogs.com/kekelele/p/7357454.html
Copyright © 2011-2022 走看看