Delegate 一点理解

using System;

using System.Collections.Generic;

using System.Text;


namespace ConsoleProject

{

    public delegate void CallBack(int a, int b);

    class DelegateTest

    {

        public static void Main()

        {

            FeedBack(CallBackControl, 3, 4);

            FeedBack(CallBackMsgbox, 5, 4);

            Console.ReadKey();

        }


        public static void FeedBack(CallBack callBack, int a, int b)

        {

            //其实在 .net 1.1版本callBack(a,b)直接这样写的;如果写成callBack.Invoke(a,b)反而有问题。为什么出现这种情况,Delegate本质是一个类,callBack 现在是一个对象,一个对象后面直接跟参数不是很奇怪,其实他省略了Invoke方法。后来.net2.0为了向下兼容,可以把Invoke方法写出来,所以这2种写法都是可以的。

            callBack.Invoke(a, b);

        }


        public static void CallBackControl(int a, int b)

        {

            Console.WriteLine("CallBackControl's result is {0}. ", a + b);

        }

        public static void CallBackMsgbox(int a, int b)

        {

            Console.WriteLine("CallBackMsgbox 's result is {0}. ", a + b);

        }


    }


}

posted @ 2008-11-26 14:15  做你所想  阅读(163)  评论(0)    收藏  举报