剑客星云-- 海 风
--------------------寻觅自己的天空

  在理解委托的时候感觉有点别扭,查考了一些书籍和自己编写的代码后,谈谈自己对委托的理解。
  委托是一种特殊的.Net数据类型,它是事件处理机制的核心。正如int变量存储数字,对

象存储类实例,委托存储对方法的引用。委托将方法作为参数传递。当一个类必须调用另一个

类的方法时,但在编译的时候不知道该方法,就要用到委托。委托引用一个特定的方法,它可

以作为参数传递给另一个方法,将委托作为参数的方法可以用它调用委托所引用的初始方法。
        尽管委托引用方法,其行为象方法,但从技术上讲它们是一种类--所有的委托派生

System.Delegate类。还有另一种委托叫作多播委托,它派生System.MulticastDelegate。而后

者又派生于System.Delegate。多播委托是一种特殊的委托,可以保存对多个方法的引用。
 委托可以引用与任何与委托定义有着相同签名的方法。
如我们可以这样声明和调用委托:
namespace  name   //命名空间名
{
     // 声明一个委托
     public delegate void ChangeHandler();
    public class  A      //定义一个类
    {
        private void Method();
        B  b=new B();
       b.Change += new ChangeHandler(Method);   //委托实例化
    }
     public class  B     //定义另一个类
    {
        // 声明一个委托事件,在下面调用其Change方法
        public event ChangeHandler Change;
      public void  Method2(type para)
     {
        Change();           //可以这样调用签名方法
     }
    }

}
上面示例中,类B要调用类A的方法Method,但是不知道调用那个方法.因此在B中声明一个委托Change,,类A中  b.Change += new ChangeHandler(Method)实例化委托,类B中引用Change()就可以调用Method方法。
特别注意:方法Method定义与委托定义要相同。委托实例就可以引用任何与委托定义相同签名的方法。

posted on 2006-03-24 15:50  海风  阅读(1272)  评论(0)    收藏  举报