【委托】 委托是一个特殊的类,用delegate修饰符;使函数可以作为参数被传递,作用上相当于C++中的函数指针。
委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。调用委托的时候,委托包含的所有方法将被执行
public delegate void MyDelegate(int para1, string para2);
简单委托示例:
public delegate void DoSth(string str); // step01: 首先用delegate定义一个委托
class Program
{
static void Main(string[] args)
{
DoSth SayHi = new DoSth(PrintStr); //step02: 声明一个委托变量,并把已知方法作为其构造函数的参数
SayHi.Invoke("Hello"); //通过委托的静态方法Invoke触发委托
SayHi("Hi"); //委托变量(参数列表)
Console.ReadLine();
}
//step03: 对应委托的方法
static void PrintStr(string str)
{
Console.WriteLine(str);
}
}
○ 在CLR运行时,委托DoSth实际上就一个类,该类有一个参数类型为方法的构造函数,并且提供了一个Invoke实例方法,用来触发委托的执行。
○ 委托DoSth定义了方法的参数和返回类型