• 第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

    委托进阶

  • 相关阅读:
    c# 获取某个对象的[公有属性]的名称,类型,值
    iis10 HTTP 错误 500.19
    MVC 使用EF Code First数据迁移之添加字段
    emeditor 配置教程
    独立程序员如何赚钱致富
    win7/win8通过媒体流(DLNA技术)共享音乐照片和视频
    sails中文文档地址
    游戏碰撞的原理
    Android图片圆角效果
    Android 系统 root 破解原理分析 (续)
  • 原文地址:https://www.cnblogs.com/liuslayer/p/5327020.html
Copyright © 2020-2023  润新知