C#回调函数的作用是什么和用法 ,希望通俗一点的说谢谢了c#

解决方案 »

  1.   

    在C#中,回调(callback)被叫做事件和委托(event and delegate)。作用就是调用者将一个函数作为参数传给一个方法,让这个方法反过来调用调用者定义和传入的那个函数。
      

  2.   

    http://www.cnblogs.com/birdshover/archive/2008/01/07/1029471.html
    这个地址讲得还是比较易懂的一天你老婆让你去市场买菜,而你因为偷懒就让你的儿子去买,把菜买回来了你直接将菜交给老婆.而老婆只是想要菜,并不关心菜是谁买的.第二天你老婆让你去买米,结果你又交由儿子处理.第三天老婆让去买肉,可怜的儿子再次被你叫去了... 
    从这些事情我们可以抽象出一个类来. 
    这个类就是实现不管老婆让你去做什么,你都叫儿子去代劳.那么我们就可以定义一个"让儿子去做"这样的委托.然后传入"买菜","买肉"等函数进来,这些函数就是回调函数.这样不论老婆需要"买菜","买肉"或者其他任何的事情,都可以通过你这个类来完成.
    摘自http://hi.baidu.com/merry6046/item/8459313fa189f9f7df22214e
      

  3.   


    比如
    void ForEach<T>(T[] data, Action<T> callback)
    {
        for (int i = 0; i < data.GetLength(0); i++)
        {
            callback(data[i]);
        }
    }使用
    int[] data = { 1, 2, 3, 4, 5 };
    ForEach(data, x => Console.WriteLine(x)); // 依次输出每行数字
    int sum = 0;
    ForEach(data, x => sum += x); // 将所有元素相加
    Console.WriteLine(sum);你可以看出,同样调用ForEach,我传入不同的操作,可以实现不同的功能。
      

  4.   

    回调相当于定义一个函数的时候留下一道填空题:void ForEach<T>(T[] data, _______)
    {
        for (int i = 0; i < data.GetLength(0); i++)
        {
            _______
        }
    }你可以指定函数内部某个地方填上什么。
      

  5.   

        delegate void mDelegate();    class Program
        {
            static void Main(string[] args)
            {
                //Run方法执行完了会通知Done回调函数
                new mDelegate(Run).BeginInvoke(Done, null);
                Console.ReadLine();
            }        static void Run()
            {
                Console.WriteLine("我去跑100米啦");
                for (int i = 0; i < 100; i++)
                {
                    Console.WriteLine(string.Format("{0}米", i + 1));
                }
            }        //CallBackFun
            static void Done(IAsyncResult result)
            {
                Console.WriteLine("完成啦!");
            }
        }
    这个不难懂吧