C# 关于委托的例子

来源:互联网 发布:windows redmine 安装 编辑:程序博客网 时间:2024/06/06 03:13
最近给新人讲委托,就找到曾经不知道在哪个大神处弄的实例 通俗易懂
using System; using System.Collections.Generic; using System.Text;  namespace ConsoleApplication1 {     // 这里声明委托     public delegate void Notify( int newValue );     // 压力计    class Piezometer    {        // 压力值        private int m_PressureNumber;        public int PressureNumber        {            get            {                // 返回当前压力值                return this.m_PressureNumber;            }            set            {                // 设置新的压力值                this.m_PressureNumber = value;                // 判断是否有人注册该事件,如果有就调用并传入新的压力值。                if (OnPressureChanged != null)                {                    // 这里就是DotNet框架实现的委托好处,它可以根据                    // 声明的形式自动匹配调用的参数表和返回值。                    // 调用回调事件,将新的压力值传入                    OnPressureChanged.Invoke(value);                }            }        }        // 声明一个事件,当压力值变化的时候触发该事件        public event Notify OnPressureChanged;    }    // 报警器    class Alerter    {        // 设置监听的压力计        public void Listen(Piezometer piezometer)        {            // 注册压力计压力变化事件            piezometer.OnPressureChanged += new Notify(OnChanged);        }        // 这里就是压力计变化后调用的函数        public void OnChanged(int newValue)        {            // 打印出新的压力值            Console.WriteLine(string.Format("New PressureNumber is {0}.", newValue));        }    }    class Program    {        static void Main(string[] args)        {            Alerter alerter = new Alerter();            Piezometer piezometer = new Piezometer();            // 安装压力计,进行监听            alerter.Listen(piezometer);            // 设置新的压力值,报警器就会打印出新的压力值。            piezometer.PressureNumber = 10;        }    }}

0 0
原创粉丝点击