运行库支持称为委托的引用类型,其作用类似于 C++ 中函数指针的用途。与函数指针不同,委托实例独立于它所封装的方法的类;最主要的是那些方法与委托的类型是兼容的。另外,函数指针只能引用静态函数,而委托可以引用静态和实例方法。委托主要用于 .NET 框架中的事件处理程序和回调函数。

解决方案 »

  1.   

    对指针还比较明白,对委托也是刚懂没多久比如public delegate string toStr();
    private void button1_Click(object sender, System.EventArgs e) {
    int i = 10;
    toStr toString = new toStr(i.ToString);
    MessageBox.Show(toString());}
      

  2.   

    confusing...我总觉得好象是在绕弯路,还不如直接函数调用好;不过想来微软的程序员也不是白混饭吃的,想必自有它的好处。搞这么个东西出来,是不是为了.NET里面不断强调的类型安全?
      

  3.   

    晕托管和直接调用是二回事,就好象接口,表面上是多余的,其实呢delegate 是C# 的新功能,我也是前不久刚从愚翁那学来的,还不够专业,等班他们回答吧,我只能从VC6的指针概念给你模拟一下回调,比如:我使用一个拦消息的钩子,我定义钩子时可以为它指定一个函数指针以指示它与这个指针位置挂钩就是说指针可以使您将函数地址作为参数进行传递,不然在回调时你怎么给它传递应该回调哪个函数?可以参见我的问题贴:http://expert.csdn.net/Expert/TopicView1.asp?id=1881083
      

  4.   

    委托和事件是联系在一起的
    看看msdn上事件的例子就明白委托有什么好处了
      

  5.   

    呵呵,委托!
            英文里面是DELEGATE,呵呵,为什么在C#中把这个怪怪的类叫做DELEGATE呢,翻译过来是委托呢,好了,让我们想想委托是什么?例如: 小王委托小张帮他监视小李,只要他一跳舞就去揍他,呵呵,好吧,我就用这个例子来说说C#中的DELEGATE,现在有三个类,呵呵,是小王,小张,小李,当然小张就是这个DELEGATE了,:以下是伪代码:
    小李
         {
            INSTRUCTOR (实例小张)\\初始化,传个小张实例进来
          
            操作: 跳舞 
                       {
                         ×※……×(好难看);
                         实例小张(THIS);
                    //这个this以后就要小李了,传给小王好让他揍,呵呵
                       }
          }
    ............................................
    DELEGATE 小张(OBJECT SENDER)
    //定义个委托
    。。
    小王
       {
         操作:揍(OBJECT )
            {
             我打,我打OBJECT!!;
             }
        
       }
    ....................
    舞厅
    //场景
         {
             MAIN()
                  {
                     new 实例小王;
                     new 实例小张(小王.揍);
                     \\这句是小王委托小张去监视小李
                     new 实例小李(小张);
                     \\这个小李,居然要别人监视他,呵呵,变态!
                     实例小李.跳舞;
                      \\  这个动作一做,呵呵,小李就要挨揍了!!
                 }   
        
    }  
    呵呵,我的故事说完了,呵呵,可能有语法错误,那我就不负责了,呵呵
    其实,语言中的所有的语法都是现实联系的一起的,不要被他它吓住了,呵呵