1. 委托的声明(定义)
委托的声明类似于函数定义,指定了一个返回类型和一个参数列表。但又不尽相同,不同之处:(1)要使用delegate关键字;(2)不带函数体。举例:
delegatedouble ProcessDelegate(double param1, double param2);
ProcessDelegate:委托的名称。声明完后其实质就是一类型了,即“委托类型”。委托类型有多种用途:
(1)声明“委托类型”变量。
ProcessDelegate process;
(2)用作函数参数类型,实质与声明变量一样。
bool ExecuteProcess(ProcessDelegate process){;}
(3)用作定义事件的类型(委托类型),描述事件处理方法的原型(方法的返回类型和参数列表)。
public event MessageHandler MyEvent;
2.委托类型变量的初始化
委托类型变量声明后,使用前必须先初始化。委托类型变量的初始化是对与委托有相同声明格式(即相同返回类型和参数列表)的函数的引用。之后,就可以使用委托变量调用这个函数,就像该变量是这个函数一样或当作函数的别名。
初始化方式有两种:
doubleDealWith(double p1, double p2) {;}
(1)ProcessDelegate process = DealWith; // 隐式初始化
(2)ProcessDelegate process = new ProcessDelegate(DealWith);//显式初始化
3.委托变量的使用
(1)作为函数使用,就像直接调用引用的函数。
Console.WriteLine(“{0}”, process(p1, p2));
(2)作为参数传递给函数。
bool flag = ExecuteProcess(process) 或bool flag = ExecuteProcess(DealWith);