예제 #1
0
        static void Main(string[] args)
        {
            MyFunCollection f = new MyFunCollection(Fun); //这里就用委托容器f装载了函数Fun,这个Fun必须符合MuFunCollection的定义要求

            f.Invoke();                                   //调用MyFunCollection存储的函数

            //也可以这样用 = 将函数装载进委托
            MyFunCollection f2 = Fun; //注意没打(),不然就是调用了

            f2();                     //另一种调用方式

            MyIntFun f3 = Fun2;

            //将委托作为参数传入类中的函数
            Test t = new Test();

            t.TestFun(f, f3);

            Console.WriteLine("多播委托******************************");
            //多播委托
            MyIntFun intfun = new MyIntFun(Fun2);

            intfun += Fun3; //用+= 表示新加一个函数
            intfun(3);      //两种调用方法
            //intfun.Invoke(3);


            Console.ReadLine();
        }
예제 #2
0
        //委托作为函数参数,可以将函数传入另一个函数
        public void TestFun(MyFunCollection fun1, MyIntFun fun2)  //这个TestFun的参数是两个委托
        {
            //可以在这个函数里处理一些逻辑之后再运行传进来的参数
            //例如有个数据a,在这个函数之前值不确定,但又会被后面的函数调用
            //那么就可以先计算,再传进函数
            int a = 3 * 1 * 45214 + 697;

            fun2.Invoke(a);
        }