C#中delegate的典型应用
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication7
{
//下面是用来做为委托函数的参数
class MathClass
{
public static int add(int a, int b)
{
return a + b;
}
public static int minus(int a,int b)
{
return a - b;
}
}
class Handler
{
//申明一个委托函数
private delegate int Calculation(int a, int b);
//实例化委托函数,这里是一个数组
private static Calculation[] myCalculation = new Calculation[2];
public static void EventHandler(int i, int a, int b)
{
switch (i)
{
case 1:
//实例化委托函数,这里是一个数组,把MathClass做为参数传到委托函数中去,MathClass正式委托给myCalculation[0]
myCalculation[0] = new Calculation(MathClass.add);
myCalculation[1] = new Calculation(MathClass.minus);
//在这里,把参数传给myCalculation[0],就像传给MathClass.add一样,因为已经托管
Console.WriteLine(myCalculation[0](a,b));
Console.WriteLine(myCalculation[1](a, b));
break;
case 2:
break;
default:
return;
}
}
}
class Program
{
static void Main(string[] args)
{
Handler.EventHandler(1,10,3);
}
}
}