委托与事件--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;

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

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

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

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

原文地址:https://www.cnblogs.com/1016391912pm/p/11631864.html