static void Main(string[] args) { Heater ht = new Heater(); Alarm alarm = new Alarm(); ht.Boiled += alarm.MakeAlert; ht.Boiled += (new Alarm()).MakeAlert; ht.Boiled += Display.ShowMsg; ht.BoildWater(); }
static void Main(string[] args) { // 为什么在此处不能引用实例方法 GreetPeople("zll", EnglishGreeting); GreetPeople("周梁亮", ChineseGreeting); //GreetingDelegate delegate1, delegate2; //delegate1 = EnglishGreeting; //delegate1 += ChineseGreeting; GreetingDelegate delegate1 = new GreetingDelegate(EnglishGreeting); delegate1 += ChineseGreeting; //delegate2 = ChineseGreeting; //GreetPeople("zll", delegate1); //GreetPeople("周梁亮", delegate1); //delegate1("zll"); GreetPeople("zll", delegate1); delegate1 -= ChineseGreeting; GreetPeople("zll", delegate1); // 使用委托可以将多个方法绑定到同一个委托变量,当调用此变量,可以依次调用 // 所有绑定的方法,返回最后一个方法的结果。 // delegate2("周梁亮"); //委托就相当于是一种类型,可以进行复制,只是可以将方法复制给委托 // 多个方法绑定委托。 GreetingManager gm = new GreetingManager(); // gm.MakeGreet = EnglishGreeting; // 事件“BoWenXuexiDelegate.GreetingManager.MakeGreet” // 只能出现在 += 或 -= 的左边(从类型“BoWenXuexiDelegate.GreetingManager”中使用时除外) gm.MakeGreet += ChineseGreeting; gm.GreetPeople("zll and zyd"); Heater ht = new Heater(); Alarm alarm = new Alarm(); ht.BoilEvent += alarm.MakeAlert; ht.BoilEvent += (new Alarm()).MakeAlert; ht.BoilEvent += Display.ShowMsg; ht.BoilWater(); }