Delegate是什么?
Delegate中文翻译为“委托”。Msdn中对Delegate的解释如下:
C#中的委托类似于C或C++中的函数指针。使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,委托是面向对象、类型安全的,并且是安全的。
先看下例子:
class Program
{
public delegate int Max(int v1,int v2);
static void Main(string[] args)
{
Max m_max = new Max(Program.printf);
m_max += new Max(Program.testdel);
m_max.Invoke(4,8);
do
{
} while (true);
}
static public int printf(int a, int b)
{
Console.WriteLine("printf...............{0}",a>b?a:b);
return a > b ? a : b;
}
static public int testdel(int b,int a)
{
Console.WriteLine("test...........");
return 1;
}
}
显示的结果。
Delegate在搭载多个方法时,可以通过+=增加搭载的函数,也可以通过-=来去掉Delegate中的某个函数。