技术开发 频道

.Net Framework中的委托与事件

  声明委托

public delegate void BoiledEventHandler(Object sender, BoliedEventArgs e);

public event BoiledEventHandler Boiled;//声明事件

// 定义BoliedEventArgs类,传递给Observer所感兴趣的信息

public class BoliedEventArgs : EventArgs {

public readonly int temperature;

public BoliedEventArgs(int temperature) {

this.temperature = temperature;

}

}

// 可以供继承自 Heater 的类重写,以便继承类拒绝其他对象对它的监视

protected virtual void OnBolied(BoliedEventArgs e) {

if (Boiled != null) { // 如果有对象注册

Boiled(
this, e); // 调用所有注册对象的方法

}

}

// 烧水。

public void BoilWater() {

for (int i = 0; i <= 100; i++) {

temperature
= i;

if (temperature > 95) {

//建立BoliedEventArgs 对象。

BoliedEventArgs e
= new BoliedEventArgs(temperature);

OnBolied(e);
// 调用 OnBolied方法

}

}

}

}

// 警报器

public class Alarm {

public void MakeAlert(Object sender, Heater.BoliedEventArgs e) {

Heater heater
= (Heater)sender; //这里是不是很熟悉呢?

//访问 sender 中的公共字段

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

Console.WriteLine(
"Alarm: 嘀嘀嘀,水已经 {0} 度了:", e.temperature);

Console.WriteLine();

}

}

 

0
相关文章