Exemplo n.º 1
0
        //无返回值委托测试
        static void GreatingDelegateTest()
        {
            NormalGreeting normalGreeting = new NormalGreeting();

            GreetingDelegate greeting  = new GreetingDelegate(normalGreeting.NightGreeting);
            GreetingDelegate greeting1 = new GreetingDelegate(normalGreeting.MorningiGreeting);

            GreetingDelegate greeting2 = FestivalGreeting.XmasGreeting;

            GreetingDelegate[] delegates = { greeting1, greeting2 };

            //for (int i = 0; i < delegates.Length; i++)
            //{
            //    delegates[i]("Morris");
            //}

            Console.WriteLine("---------");
            //组合委托
            // 委托可以使用"+"运算符来组合, 这个运算最终会创建一个新的委托, 其调用列表连接了作为操作数的
            //两个委托的调用列表副本

            GreetingDelegate greeting3 = greeting1 + greeting2 + greeting;

            greeting3("Morris");
            Console.WriteLine("---------");
            //移除
            //greeting3 -= greeting1;

            greeting3("morris");
        }
Exemplo n.º 2
0
        /// <summary>
        /// 事件的显示/隐式声明
        /// </summary>
        static void EventDelegateTest()
        {
            NormalGreeting greeting = new NormalGreeting();

            greeting.Init();

            greeting.GreetingEvent += FestivalGreeting.XmasGreeting;

            greeting.DoingGreeting("Momo");
        }