1.定义委托类型
delegate RetType MyDelegate(ArgType Argument, ...); // 此处定义的委托类型MyDelegate可以看成一般的自定义类型,可作为函数的形参类型传入函数。
2.定义与委托类型相符的函数,要求参数类型及返回类型与委托变量相同,类似函数数量不限
RetType MyFunction(ArgType Argument, ...)
{
// Function code
}
3.声明委托变量
MyDelegate process;
4.初始化委托变量
process = MyFunction;
process = new MyDelegate(MyFunction);
5.调用已初始化的委托变量
process(Argument, ...); // 该委托变量的调用类似于函数的调用,等同于MyFunction(Argument, ...);
6.示例
delegate double ProcessDelegate(double param1, double param2);
static double Multiply(double param1, double param2)
{
return param1 * param2;
}
static double Divide(double param1, double param2)
{
return param1 / param2;
}
static double CallDelegate(ProcessDelegate process)
{
return process(1.0, 2.0);
}
static void Main(string[] args)
{
ProcessDelegate process;
process = Multiply;
Console.WriteLine("1 * 2 = {0}", process(1.0, 2.0));
process = new ProcessDelegate(Divide);
Console.WriteLine("1 / 2 = {0}", process(1.0, 2.0));
Console.WriteLine("1 / 2 = {0}", CallDelegate(new ProcessDelegate(Divide)));
Console.WriteLine("1 / 2 = {0}", CallDelegate(Divide));
Console.ReadLine();
}