基础才是重中之重~通过人类的生活来学习Delegate

简介:

一个人(people),在他60岁之后,就宣布进入晚年了,在这个期间要多注意身体,多体检。

namespace NET基础才是重中之重

{
    /// <summary>
    /// 人类
    /// </summary>
    public class People
    {
        private int age;
        public string name = "张占占";       //姓名
        public string gander = "";         // 性别

        #region 构造方法
        public People(string _name, string _gander)
        {
            name = _name;
            gander = _gander;
        }
        public People() { }
        #endregion

        //声明委托
        public delegate void LifedEventHandler(Object sender, LifedEventArgs e);
        public event LifedEventHandler Liefd; //声明事件

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

        /// <summary>
        /// 可以供继承自 People 的类重写
        /// 以便继承类拒绝其他对象对它的监视
        /// </summary>
        /// <param name="e"></param>
        protected virtual void OnLife(LifedEventArgs e)
        {
            if (Liefd != null)
            {
                Liefd(this, e);  // 调用所有注册对象的方法
            }
        }

        /// <summary>
        /// 生活
        /// </summary>
        public void Life()
        {
            for (int i = 0; i <= 70; i++)
            {
                age = i;
                if (age > 60)
                {
                    LifedEventArgs e = new LifedEventArgs(age);
                    OnLife(e);
                }
            }
        }
    }

    /// <summary>
    /// 警报您了
    /// </summary>
    public class Alarm
    {
        public void MakeAlert(Object sender, People.LifedEventArgs e)
        {
            People heater = (People)sender;
            //访问 sender 中的公共字段
            Console.WriteLine("Alarm:{0} - {1}: ", heater.gander, heater.name);
            Console.WriteLine("Alarm: 您已经 {0} 岁了:", e.temperature);
            Console.WriteLine();
        }
    }

    /// <summary>
    /// 显示信息
    /// </summary>
    public class Display
    {
        public static void ShowMsg(Object sender, People.LifedEventArgs e)
        {   //静态方法
            People heater = (People)sender;
            Console.WriteLine("Display:{0} - {1}: ", heater.gander, heater.name);
            Console.WriteLine("Display:您已经进行晚年了,{0}岁要注意身体了。", e.temperature);
            Console.WriteLine();
        }
    }

    class Program
    {
        static void Main()
        {
            People heater = new People("张占占", "");
            Alarm alarm = new Alarm();
            heater.Liefd += alarm.MakeAlert;   //注册方法
            heater.Liefd += Display.ShowMsg;       //注册静态方法
            heater.Life();   //会自动调用注册过对象的方法
            Console.ReadKey();
        }
    }
} 

 本文转自博客园张占岭(仓储大叔)的博客,原文链接:基础才是重中之重~通过人类的生活来学习Delegate,如需转载请自行联系原博主。

目录
打赏
0
0
0
0
17
分享
相关文章
让我们一起探讨Java多态的奥秘,看看它是如何打破“一刀切”的局限,让我们的代码更加生动多彩
让我们一起探讨Java多态的奥秘,看看它是如何打破“一刀切”的局限,让我们的代码更加生动多彩
55 5
|
8月前
史上最简单给大模型注入新知识的方法(一)
史上最简单给大模型注入新知识的方法(一)
175 0
来自给大一新生的分享会——如何更好的学习专业知识
来自给大一新生的分享会——如何更好的学习专业知识
50 0
谈谈数据驱动和数据导向方法的选择
是数据做出了决定,还是你用数据帮助做出了决定?两者的选择将改变公司与数据的关系。
《Thinking in Bets》读书分享 - 如何在信息不完全情况下做出更好的决策(1)
《Thinking in Bets》中文《对赌:信息不足时如何做出高明决策》读书笔记
1537 0
体外类生命系统构建领域取得进展
该研究基于光诱导微流控芯片,利用动态变化的数字光掩膜,实现了多维水凝胶结构的层层微制造,并且具备非紫外、快速、灵活、可重构的优点,为建立体外类生命系统、生物器官模型等奠定了基础。
1121 0
智能感知与交互在产学研领域都有哪些前沿进展?AIDL讲习班将带给你答案
所以她也为报名的学员提了一些建议,比如可以去看一看目前感知、交互方面的文章、综述等,做一个基本了解。如果对于某一方面特别感兴趣,建议查查相关讲者的简历和介绍,准备好问题跟他们进行交流。
907 0