委托我一直没有理解,今天看书,书上写:class Test
{
    //声明委托
    delegate void SimpleDelegate();    static void Main(string[] args)
    {
        SimpleDelegate d = new SimpleDelegate(F);
        //没有必要为一个方法示例一个委托,然后通过该委托立即调用它。因为直接调用一个方法会更简单。
        //d();
        MultiCall(d, 10);
    }
    static void F()
    {
        Console.WriteLine("Test.F");
    }
    //在使用匿名时,委托就显示出了其优越性。请看下面:
    static void MultiCall(SimpleDelegate d, int count)
    {
        for (int i = 0; i < count; i++)
            d();
    }
}看完不是很明白,大家再讨论一下,谁再能解释解释,要通俗易懂的...

解决方案 »

  1.   

    委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
      

  2.   

    http://msdn.microsoft.com/zh-cn/library/3sw9sk6y(VS.80).aspx
    “委托”示例
      

  3.   

    楼上几位一看就知道是Ctrl+C->Ctrl+V,一点自己的理解都没有
      

  4.   


    我原来也不太清楚委托的作用。。但是看了1楼的说明,已经明朗化了。说得很清晰阿。
    相当于js里面用eval("函数名");
    vb里面用 Execute("函数名")实现的目的是一样的,你声明好委托以后则可以将你写好的那些方法动态调用。如果理解有误。请朋友们指正。
    PS:不要随意的对帮助你的朋友冷言冷语,这样导致的结果是朋友越来越少。多从自己方面找原因吧。
      

  5.   

    委托嘛,最简单的理解,就是你想买电脑!但是没时间!所以你就可以委托你的下属帮你买电脑!你可以规定他买台式的还是买笔记本的,就相当这样声明委托 delegate void SimpleDelegate();
    和delegate string Simpledelegate();
      

  6.   

    使用委托完成窗体间传值的例子
    http://topic.csdn.net/u/20080626/17/1742fccb-1513-4543-9f9f-045660d24666.html
      

  7.   

    //没有必要为一个方法示例一个委托,然后通过该委托立即调用它。因为直接调用一个方法会更简单。只是这个例子你感觉没必要。现在大多数书上的例子只是演示用法且是没有意义的用法,废书!抄袭的。
    如果很多这样的方法呢?张子阳:C# 中的委托和事件
    http://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.html这篇文章讲的比较易懂。
      

  8.   

    老的windows程序员在没用MFC之前,要处理windows消息,都是这样:if(msg = BNT_LCLICK)  DoLBntClick();
    else if(msg = BNT_RCLICK)  DoRBntClick();
    else if(msg = DoubleCLICK)  DoDoubleClick();
    else ...............
    如果要处理的消息有100个(windows系统消息有几千个),这样的代码写到最后就要写得手抽筋了.于是聪明的程序员这样来做:struct{
       int msg;
       void (*fn)(arglist);
    }
    messageList[] = {
       BNT_LCLICK,DoLBntClick,
       BNT_RCLICK,DoRBntClick,
       DoubleCLICK,DoDoubleClick,
       .........................
    };定义好后,只要用一个循环.
    for(int i=0;i<数据长度,i++){
       if(messageList[i].msg == msg){messageList[i].fn();break;} 
    }
      

  9.   

    委托是实现事件(event)机制的基础,winform/asp.net本身就是个“事件驱动”的应用。
    你说有什么用吧!
      

  10.   

    " 委托可以把一个方法当参数传过去  "这个说得应该比较易懂, .net就是通过事件委托来实现代码、界面分离,这样看就知道委托是多么有意义的
      

  11.   

    委托的函数在我的理解里类似于一个占位符,说明执行序列里有它,但具体实现还是要靠调用它的类实现。举个例子说吧,你要写一个泡MM的类。不同性格不同背景的MM追求的方法是不一样的,你的类不可能全部包含。这时候你可以把函数 追MM()定义成一个委托。具体实现让调用这个类的人根据实际情况编写,爱怎么泡就怎么泡。只要返回值和参数完全符合你的委托定义,都可以。
      

  12.   

    http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx