public static void ShowMsg(Object sender, Heater.BoiledEventArgs e) { Heater heater = (Heater)sender; Console.WriteLine("Alarm:{0} - {1}: ", heater.area, heater.type); Console.WriteLine("Display:水快烧开了,当前温度:{0}度。", e.temperature); Console.WriteLine(); }
public void MakeAlert(Object sender, Heater.BoiledEventArgs e) { Heater heater = (Heater)sender; Console.WriteLine("Alarm: {0} - {1}", heater.type, heater.area); Console.WriteLine("Alarm: 嘀嘀嘀,水已经 {0} 度了:", e.temperature); Console.WriteLine(); }
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(); }