//无返回值委托测试 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"); }
/// <summary> /// 事件的显示/隐式声明 /// </summary> static void EventDelegateTest() { NormalGreeting greeting = new NormalGreeting(); greeting.Init(); greeting.GreetingEvent += FestivalGreeting.XmasGreeting; greeting.DoingGreeting("Momo"); }