예제 #1
0
        public void Show()
        {
            NoReturnNoPara noReturnNoPara = new NoReturnNoPara(DoNothing); //2 委托的实例化

            noReturnNoPara.Invoke();                                       //3 委托实例的调用

            {
                WithReturnWithPara withReturnWithPara = new WithReturnWithPara(this.DoNothing2);
                string             result             = withReturnWithPara.Invoke(2);
                Console.WriteLine(result);
            }
            {
                //多播委托:一个变量保存多个方法,可以增减;invoke的时候可以按顺序执行
                //+= 为委托实例按顺序增加方法,形成方法链,Invoke时,按顺序依次执行
                NoReturnNoPara method = new NoReturnNoPara(this.DoNothing);
                method += new NoReturnNoPara(this.DoNothing);
                method += new NoReturnNoPara(DoNothingStatic);
                method.Invoke();

                foreach (NoReturnNoPara item in method.GetInvocationList())
                {
                    item.Invoke();
                }

                //-= 为委托实例移除方法,从方法链的尾部开始匹配,遇到第一个完全吻合的,移除且只移除一个,没有也不异常
                method -= new NoReturnNoPara(this.DoNothing);
                method -= new NoReturnNoPara(DoNothingStatic);
                method.Invoke();
            }
        }
예제 #2
0
        public static void Show()
        {
            {
                NoWithReturnPara method = new NoWithReturnPara(ShowStudent); //实例化委托
                method.Invoke(186, "joney");                                 //调用委托
            }
            {
                NoWithReturnPara method = delegate(int id, string name)//匿名方法
                {
                    Console.WriteLine("id={0},name={1}正在上班。", id, name);
                };
                method.Invoke(213, "Saly");
            }

            {
                NoWithReturnPara method = (id, name) =>
                {
                    Console.WriteLine("id={0},name={1}正在开会。", id, name);
                };
                method.Invoke(88, "Jamer");
            }

            {
                NoWithReturnPara method = (id, name) => Console.WriteLine("id={0},name={1}正在执行终极任务。", id, name);
                method.Invoke(168, "Hammer");
            }

            {
                NoReturnNoPara          method  = () => { };
                NoWithReturnWithOnePara method1 = i => Console.WriteLine(i);
                method1.Invoke(12);
            }

            {
                WithReturnWithPara method = (m, n) => { return(DateTime.Now.Second); };

                Console.WriteLine("当前时间second={0}", method.Invoke(1, "jj"));
            }

            {
                WithReturnWithPara method = (m, n) => DateTime.Now.Second;

                Console.WriteLine("当前时间second={0}", method.Invoke(1, "kk"));
            }
            {
                Action       method = () => { };
                Action <int> act1   = i => { };
            }
        }