请给个简单的例子,解释下,什么情况下,怎样用委托。多谢。

解决方案 »

  1.   

    ....google 
    delegate
    ..很多!
      

  2.   


    using System;
    namespace myspace
    {
      class A
      {
         public delegate void CuttomHandler(string message);
     public event CuttomHandler testHandler;
     
     public void testEnent()
     {
        string str = "Hello world";
        if(testHandler!=null) this.testHandler(str);
     }
      }
      class B
      {
         public static void Main()
     {
        A a = new A();
        a.testHandler += new A.CuttomHandler(B_testHandler);
        a.testEnent();

     }
     static void B_testHandler(string message)
         {
       Console.WriteLine("b:"+message);
     }
      }
    }
      

  3.   

    多线程:例如:        string PartNumber = ""; 
            DataTable PNTable; 
            delegate void SetValueEventHandler(); 
            public void SetLabelText() 
            { 
                if (this.label1.InvokeRequired) 
                { 
                    SetValueEventHandler de = SetLabelText; 
                    label1.Invoke(de); 
                    
                } 
                foreach (DataRow dr in PNTable.Rows) 
                { 
                    PartNumber = dr["content"].ToString(); 
                    Application.DoEvents(); 
                    this.label1.Text = PartNumber; 
                }              
            } 
            private void btnCheckPartNumber_Click(object sender, EventArgs e)  
            { 
                ThreadStart entryPoint = new ThreadStart(SetLabelText); 
                Thread displayLabel = new Thread(entryPoint); 
                displayLabel.Start(); 
            }
      

  4.   

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

  5.   


    http://www.lokcore.com/sunny/article.asp?id=7