第3章 C#中的委托和事件

.NET框架中的委托和事件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using System.Text.RegularExpressions;

namespace _.net之美
{
    class Program
    {
        static void Main(string[] args)
        {
            Heater heater = new Heater();
            Alert alert = new Alert();
            heater.boiled += alert.AlertTemperature;
            heater.boiled += Display.ShowMsg;
            heater.BoilWater();
            Console.ReadKey();
        }
    }

    public class Heater
    {
        private readonly string area="ChengDu";
        public string Area { get { return area; } }

        private readonly string type = "001";
        public string Type { get { return type; } }

        private int temperature;

        public delegate void BoiledEventHandle(object sender, BoiledEventArgs args);
        public event BoiledEventHandle boiled;

        public void BoilWater()
        {  
            for (int i = 0; i <= 100; i++)
            {
                temperature = i;
                BoiledEventArgs e = new BoiledEventArgs(temperature);
                if (temperature > 95)
                {
                    OnBoiled(e);
                }
            }
        }

        private void OnBoiled(BoiledEventArgs e)
        {
            if (boiled != null)
                boiled(this, e);
        }

        public class BoiledEventArgs
        {
            private readonly int temperature;
            public BoiledEventArgs(int temperature)
            {
                this.temperature = temperature;
            }

            public int Temperature { get { return this.temperature; } }
        }
    }

    public class Alert
    {
        public void AlertTemperature(object sender, Heater.BoiledEventArgs e)
        {
            Heater heater = (Heater)sender;
            Console.WriteLine("Area:{0},Type:{1}", heater.Area, heater.Type);
            Console.WriteLine("水快烧开了!");
        }
    }

    public class Display
    {
        public static void ShowMsg(object sender, Heater.BoiledEventArgs e)
        {
            Heater heater = (Heater)sender;
            Console.WriteLine("Area:{0},Type:{1}", heater.Area, heater.Type);
            Console.WriteLine("当前温度:{0}", e.Temperature);
        }
    }
}
View Code

委托进阶

原文地址:https://www.cnblogs.com/liuslayer/p/5327020.html