日期:2009-03-18  浏览次数:20502 次

委托是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();
   }
}