当遇到在运行时才能决定用哪种方法的时候,使用委托。
可以把delegate看做一个包含有序方法列表的对象,这些方法具有相同的签名和返回类型。
定义一个委托
<访问修饰符> delegate <返回类型> <委托名> (<参数列表>)
访问修饰符不是必须的
public delegate int MyDelegate (int s);
委托的例子
using System;
namespace 委托
{
delegate void MyDel(int value);//声明委托类型
class MainClass
{
public static void Main(string[] args)
{
MainClass mainClass = new MainClass();
MyDel del;//声明
//随机产生一个0-99之间的随机数
Random random = new Random();
int randomValue = random.Next(99);
del = (randomValue < 50)
? new MyDel(mainClass.PrintLow)
: new MyDel(mainClass.PrintHigh);//xxx ? xxx : xxx
del(randomValue);//执行委托
}
void PrintLow(int value)
{
Console.WriteLine("{0} - Low Value", value);
}
void PrintHigh(int value)
{
Console.WriteLine("{0} - High Value", value);