日期:2014-05-17  浏览次数:20976 次

对于事件的两个参数sender和e的疑问
看到网上有一篇讲事件的文章,里面用委托模拟了个热水器烧水的过程,热水器分为烧水部分、报警部分和显示器部分:

 public class Heater 
 {
       private int temperature;
       public string type = "RealFire 001";       // 添加型号作为演示
       public string area = "China Xian";         // 添加产地作为演示

       //声明委托
       public delegate void BoiledEventHandler(Object sender, BoiledEventArgs e);
       public event BoiledEventHandler Boiled; //声明事件

       // 定义BoiledEventArgs类,传递给Observer所感兴趣的信息
       public class BoiledEventArgs : EventArgs 
       {
           public readonly int temperature;
           public BoiledEventArgs(int temperature) 
           {
              this.temperature = temperature;
           }
       }


       // 可以供继承自 Heater 的类重写,以便继承类拒绝其他对象对它的监视
       protected virtual void OnBoiled(BoiledEventArgs e) 
       {
           if (Boiled != null) 
           { // 如果有对象注册
              Boiled(this, e);  // 调用所有注册对象的方法
           }
       }
       
       // 烧水。
       public void BoilWater() 
       {
           for (int i = 0; i <= 100; i++) 
           {
              temperature = i;
              if (temperature > 95) 
              {
                  //建立BoiledEventArgs 对象。
                  BoiledEventArgs e = new BoiledEventArgs(temperature);
                  OnBoiled(e);  // 调用 OnBolied方法
              }
        &nb