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(); 首次使用可以(“=”,是赋值语法),但是,如果多次使用,那么最终执行委托的时候,只能够执行最后一个函数,相当于把其他的函数弄丢了,所以,有一定的不安全性因素。那么,为了保证委托的安全性,从而出现了事件。简言之,事件就是为了保证委托使用的安全性产生的。事件的调用只能够使用“+=”和“-=”,所以,不会出现赋值现象,将其他的函数覆盖掉。
  • 相关阅读:
    base64编码
    ios开发之指纹识别
    date
    php的学习
    mac下安装mysql遇到的无法连接的问题
    关于git上传文件过大报错的问题 remote: warning: Large files detected.
    安卓开发中Theme.AppCompat.Light的解决方法
    ubuntu操作系统中卸载mysql的安装与卸载
    重新格式化删除U盘隐藏分区与如何在LMT下安装非Ghost win7
    网易有道笔试2015-05-12
  • 原文地址:https://www.cnblogs.com/kekelele/p/7357454.html
Copyright © 2011-2022 走看看