委托是C#中的一个全新的概念.类似于C++中的函数指针.但是,不像C++中的函数指针,委托是完全面向对象的; 不像指向成员函数的指针,委托封装一个对象的实例方法或静态方法.
一个委托声明定义一个从System.Delegate派生的类.一个委托实例封装一个或多个方法,每一个被称为可调 用的实体.委托的最有用和感兴趣的是,它不知道或不关心,它所封装的方法的类.所以说,委托是"匿名"引用.
例子:
using System;
//委托声明
delegate void MyDelegate();
//实现委托的类,一个静态方法,一个实例方法
public class MyClass
{
public void InstanceMethod()
{
Console.WriteLine("A message from the instance method.");
}
static public void StaticMethod()
{
Console.WriteLine("A message from the static method.");
}
}
//主要类,包括Main()函数
public class MainClass
{
static public void Main()
{
//一个委托类的实例
MyClass p = new MyClass();
//委托实例方法
MyDelegate d = new MyDelegate(p.InstanceMethod);
d();
//委托静态方法
d = new MyDelegate(MyClass.StaticMethod);
d();
}
}