程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 簡單C#事件示例

簡單C#事件示例

編輯:C#入門知識

本文用事件模擬一個熱水器燒水的過程,差不多是這樣的:

熱水器開始對水加熱,當水加熱到95度以上的時候,熱水器的報警器開始報警,並且在屏幕上顯示當前的水溫。

不難從上面的這一小段話看到,要想模擬該程序,需要一個熱水器對象Heater,報警器對象Alarm,顯示器對象Display。

下面邊上代碼邊解釋吧。

   

/// <summary>
    /// 熱水器類,用來燒水的
    /// </summary>
    class Heater
    {
        private int temperature;                    //水溫
        public delegate void BoilEventHandler(object sender, BoilEventArgs e);
        public event BoilEventHandler boil;         //自定義事件

        public void OnBoil(BoilEventArgs e)         //水溫達到一定溫度後開始執行事件
        {
            if (boil != null)
                boil(this, e);
        }

        public void BoilWater()                     //水從0度開始燒,當達到95度的時候開始報警
        {
            for (int i = 0; i <100; i++)
            {
                temperature = i;
                if (temperature >= 95)
                {
                    BoilEventArgs e = new BoilEventArgs(temperature);
                    OnBoil(e);
                }
            }
        }
    }

 

/// <summary>
    /// 自定義事件參數,此類必須繼承EventArgs類
    /// </summary>
    class BoilEventArgs:EventArgs
    {
        public readonly int temperature;            //水溫

        public BoilEventArgs(int temperature)
        {
            this.temperature = temperature;
        }
    }

 

/// <summary>
    /// 警報器類,當水溫達到一定程度時,發出聲響提示用戶水已開
    /// </summary>
    class Alarm
    {
        public void MakeAlarm(object sender, BoilEventArgs e)
        {
            Console.WriteLine(string.Format("警報:嘟嘟,水溫{0}度", e.temperature.ToString()));
        }
    }

 

/// <summary>
    /// 顯示器類,當水溫達到一定程度時,在屏幕上顯示當前溫度給用戶看
    /// </summary>
    class Display
    {
        public static void ShowMessage(object sender,BoilEventArgs e)
        {
            Console.WriteLine(string.Format("屏幕顯示:當前溫度{0}度",e.temperature.ToString()));
        }
    }

 

class Program
    {
        static void Main(string[] args)
        {
            Heater heater = new Heater();
            Alarm alarm = new Alarm();
            heater.boil += alarm.MakeAlarm;
            heater.boil += Display.ShowMessage;
            heater.BoilWater();
            Console.ReadLine();
        }
    }

 

輸出結果:

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved