C# 委托現實范例代碼

mb78 9年前發布 | 2K 次閱讀 C#

using System;
using System.Collections.Generic;
using System.Text;
namespace Delegate {
    // 熱水器
    public class Heater {
       private int temperature;
       public delegate void BoilHandler(int param);   //聲明委托
       public event BoilHandler BoilEvent;        //聲明事件
       // 燒水
       public void BoilWater() {
           for (int i = 0; i <= 100; i++) {
              temperature = i;
              if (temperature > 95) {
                  if (BoilEvent != null) { //如果有對象注冊
                      BoilEvent(temperature);  //調用所有注冊對象的方法
                  }
              }
           }
       }
    }
    // 警報器
    public class Alarm {
       public void MakeAlert(int param) {
           Console.WriteLine("Alarm:嘀嘀嘀,水已經 {0} 度了:", param);
       }
    }
    // 顯示器
    public class Display {
       public static void ShowMsg(int param) { //靜態方法
           Console.WriteLine("Display:水快燒開了,當前溫度:{0}度。", param);
       }
    }

class Program {
   static void Main() {
       Heater heater = new Heater();
       Alarm alarm = new Alarm();
       heater.BoilEvent += alarm.MakeAlert;    //注冊方法
       heater.BoilEvent += (new Alarm()).MakeAlert;   //給匿名對象注冊方法
       heater.BoilEvent += Display.ShowMsg;       //注冊靜態方法
       heater.BoilWater();   //燒水,會自動調用注冊過對象的方法
   }
}

}</pre>

 本文由用戶 mb78 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!