与函数指针不同,委托实例独立于它所封装的方法的类;最主要的是那些方法与委托的类型是兼容的。另外,函数指针只能引用静态函数,而委托可以引用静态和实例方法。委托主要用于 .NET Framework 中的事件处理程序和回调函数。

解决方案 »

  1.   

    参考一下:
    http://blog.csdn.net/clamphammer/archive/2004/11/21/189804.aspx
    另外还有微软的MSDN,更详细
      

  2.   

    可以这样理解:
    委托是一个函数的指针,但它可以被异步地去调用。
    当我们声明一个委托的时候,例如:
    public delegate bool FactorizingAsyncDelegate(
             int factorizableNum, 
             ref int primefactor1,
             ref int primefactor2);系统是这样解释的:public class FactorizingAsyncDelegate : delegate
    {
       public bool Invoke(
             int factorizableNum,  
             ref int primefactor1,
             ref int primefactor2);   // The following code was supplied by the compiler.
       public IAsyncResult BeginInvoke(
             int factorizableNum,  
             ref int primefactor1,
             ref int primefactor2,
             AsyncCallback cb,
             Object AsyncState
             );   // The following code was supplied by the compiler.
       public bool EndInvoke(
             ref int primefactor1,
             ref int primefactor2,
             IAsyncResult ar);
    }可以理解为这段代码是系统自己生成的这里的Invoke方法是同步调用,也就是我们一般用的Event和在声明类里对委托的直接调用。
    但它的BeginInvoke和EndInvoke却是异步的。即当我们使用委托的异步的BeginInvoke和EndInvoke时,本线程是post一个Message出去的,这个Message会启动一个新的线程去执行委托对应的函数(方法)。
      

  3.   

    好比有好几盏灯,每盏灯都有个开关。你要开哪盏灯,你就得去跑过去控制那灯的开关。
    而代理(delegate)好比是把每盏灯的开关都接到一个控制面板上。你要控制哪盏灯,只需要控制面板就可以了。