回调函数 既然是把一个方法让另外一个方法去执行。
 那各位大哥,请看。
 public void Test(string name)
{
    if(name=="xxoo")
    {
       Test2();
     };
}
  那以上代码中的 Test2() 是一个回调函数吗?

解决方案 »

  1.   

    可以参考
    http://www.csharpwin.com/csharpspace/6299r750.shtml
    http://www.cnblogs.com/birdshover/archive/2008/01/07/1029471.html
      

  2.   

    不是。 回调的意思是, 把手机号给我。我有事CALL你。
      

  3.   

    举个例子吧
     
    delegate void WorkDone();
    void Working(WorkDone callBack){
    //Working code.
    //当工作完成的时候执行这个委托.
    callBack();
    }void WorkDoneHandler(){
       //Do something other.
    }
    void Do(){
      WorkDone callBack = new WorkDone(WorkDoneHandler);
      Working(callBack);
    }
     也就是相当把某个方法(WorkDoneHandler())当作参数传递给另外一个方法(Working(WorkDone callBack)).
    这样做的好处在于,可以动态的指定执行哪个方法.
    比如在Do()方法中,我们指定的callback 是WorkDoneHandler 当然也可以是其它匹配的方法. 而Working()方法 更本不需要知道自己最后执行的是哪个Handler.
      

  4.   

    public delegate string ProcessDelegate(string s1, string s2);
        class Program
        {
            static void Main(string[] args)
            {
                Test t = new Test();
                string r1 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process1));
                string r2 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process2));
                Console.WriteLine(r1);
                Console.WriteLine(r2);
            }
        }
        public class Test
        {
            public string Process(string s1,string s2,ProcessDelegate process)
            {
                return process(s1, s2);
            }
            public string Process1(string s1, string s2)
            {
                return s1 + s2;
            }        public string Process2(string s1, string s2)
            {
                return s1 + Environment.NewLine + s2;
            }    }
    }
    Process方法调用了一个回调函数。可以看出,可以把任意一个符合这个委托的方法传递进去,意思就是说这部分代码是可变