zoukankan      html  css  js  c++  java
  • 委托与事件--delegate&&event

    委托

    访问修饰符 delegate 返回值 委托名(参数);

    public delegate void NoReturnNoPara();

    public void NoReturnNoParaMethod() {};

    delegate地位:密封类,继承自System.MulticastDelegate,内置几个方法:构造方法、Invoke等;

    委托的实例化:NoReturnNoPara myD = new NoReturnNoPara(NoReturnNoParaMethod);

    委托的调用:myD.Invoke(); 或 myD();

    委托的核心:将方法作为参数传递;

    委托的好处:委托解耦,减少重复代码;异步多线程;多播委托(一个委托可以‘挂’多个方法+= -=);

    Action委托:无返回值的 委托 或 泛型委托,可接受0~16个参数。

    public void method(string str,int i){}

    Action<string,int> ac = method;

    Func委托:有返回值的泛型委托,可接受0~16个参数,最后一个参数为返回类型。注:Func只是泛型委托

    public bool isEmpty(int i){}

    Func<int,bool> fu = isEmpty;

    事件

    定义:是带event关键字的委托实例

    访问修饰符 event 委托名 事件名;

    public event NoReturnNoPara NoReturnNoParaHandlerEvent;

    使用范围:事件只能在声明的类中调用(子类都不能用),可以在类外部+= -=;

    事件:可以把一堆可变的动作/行为封装出去,交给第三方来指定;

       程序设计的时候,我们可以把程序分成两部分,一部分是固定的,直接写死,还有不固定的部分,通过一个事件去开放接口,外部可以随意扩展动作。

    框架:完成固定/通用部分,把可变部分留出扩展点,支持自定义

  • 相关阅读:
    破解 inode 校园网多网卡限制方法
    更改 eclipse的 workplace路径
    VMware Network Adapter VMnet1和VMnet8 未识别的网络的解决方法
    eclipse更改xml文件,txt文件,property文件等文件编辑器的字体设置
    Lua中数组全排序
    Lua尾调用
    C++ 调用Lua简单例子
    linux生成core dump
    vc获取系统日期
    C++培训第一天
  • 原文地址:https://www.cnblogs.com/1016391912pm/p/11631864.html
Copyright © 2011-2022 走看看