委托和事件

delegate 委托

 

委托是一种将方法作为方法的参数进行回调的机制,类似于C++中的函数指针

委托的定义是一系列调用方法的规范

形式:public delegate 返回类型 委托名();

委托的定义与方法的定义类似,但委托是一种类型

 

代码例子

委托的定义是对被委托调用的一种规范定义,如返回值,参数等,可以看做是一个抽象方法

 

方法1

委托名 委托对象=new 委托名(被调用的方法)

 

方法2

委托名 委托对象=被调用的方法

 

方法3 匿名函数

委托名 委托对象=delegate(参数){具体实现};

 

方法4 Lambda

委托名 委托对象=((参数)=>{具体实现});

Lambda表达式是匿名函数的特殊情况

 

方法5

Func<参数类型,返回值类型> 委托对象=((参数)=>{具体实现});

Action<参数类型> 委托对象= ((参数)=>{具体实现});

Func和Action的定义来看,Func是有返回值的,Action是没有返回值的

 

event 事件

案例分析:猫叫了一声,老鼠跑了,主人醒了

事件用event关键字,但在使用方面与委托一样,其中+=是订阅,是多播委托

EventHandler也是委托,定义如下:

下面来举例模拟

原文地址:https://www.cnblogs.com/arvinzd/p/14254108.html