技术开发 频道

.Net Framework中的委托与事件

 

// 显示器

public class Display {

public static void ShowMsg(Object sender, Heater.BoliedEventArgs e) { //静态方法

Heater heater
= (Heater)sender;

Console.WriteLine(
"Display:{0} - {1}: ", heater.area, heater.type);

Console.WriteLine(
"Display:水快烧开了,当前温度:{0}度。", e.temperature);

Console.WriteLine();

}

}

class Program {

static void Main() {

Heater heater
= new Heater();

Alarm alarm
= new Alarm();

heater.Boiled
+= alarm.MakeAlert; //注册方法

heater.Boiled
+= (new Alarm()).MakeAlert; //给匿名对象注册方法

heater.Boiled
+= new Heater.BoiledEventHandler(alarm.MakeAlert); //也可以这么注册

heater.Boiled
+= Display.ShowMsg; //注册静态方法

heater.BoilWater();
//烧水,会自动调用注册过对象的方法

}

}

}


输出为:

Alarm:China Xian - RealFire 001:

Alarm: 嘀嘀嘀,水已经 96 度了:

Alarm:China Xian - RealFire 001:

Alarm: 嘀嘀嘀,水已经 96 度了:

Alarm:China Xian - RealFire 001:

Alarm: 嘀嘀嘀,水已经 96 度了:

Display:China Xian - RealFire 001:

Display:水快烧开了,当前温度:96度。

// 省略 ...
 

0
相关文章