zoukankan      html  css  js  c++  java
  • 在C#中使用代理的方式触发事件 的简单习作

    程序简单就 不再作说明了.
    在学习IssueVision的OBSERVER(观察者)模式时由于对代理和事件不是很熟悉,遇到了一些问题,所以就有了这个简单习作.
    TestEvent.cs

    using System;

    namespace ConsoleApplication2
    {
        /// <summary>
        /// Class1 的摘要说明。
        /// </summary>
        class TestEvent
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main(string[] args)
            {
                //
                // TODO: 在此处添加代码以启动应用程序
                //

                TestEvent c = new TestEvent();
                c.Test();
           
            }


            public void Test()
            {
                ChangeNumber number = new ChangeNumber();
     
                number.BigEvent += new ChangeNumber.ChangeHandler(this.Big);
                number.SmallEvent += new ChangeNumber.ChangeHandler(this.Small);
                number.EqualEvent += new ChangeNumber.ChangeHandler(this.Equal);

                number.Number = 1;        //运行之前Number=0;
                number.Number = 1;        //运行之前Number=1;
                number.Number = 0;        //运行之前Number=1;
            }


            public void Big()
            {
                Console.WriteLine("big");
            }
            public void Small()
            {
                Console.WriteLine("small");
            }
            public void Equal()
            {
                Console.WriteLine("equal");
            }
        }
    }


    ChangeNumber.cs

    using System;

    namespace ConsoleApplication2
    {
        /// <summary>
        /// Class2 的摘要说明。
        /// </summary>
        public class ChangeNumber
        {
            public delegate void ChangeHandler();

            public event ChangeHandler BigEvent;
            public event ChangeHandler SmallEvent;
            public event ChangeHandler EqualEvent;

            public ChangeNumber()
            {
                //
                // TODO: 在此处添加构造函数逻辑
                //
            }

            private int m_number = 0;

            public int Number
            {
                set
                {
                    if(value > this.m_number)
                    {
                        BigEvent();            //这时最好先判断一下BigEvent是不是为null
                    }
                    else if(value < this.m_number)
                    {
                        SmallEvent();
                    }
                    else
                    {
                        EqualEvent();
                    }


                    m_number = value;
                }
            }
        }
    }


     

  • 相关阅读:
    DPDK ring简单说明
    DPDK初始化流程
    从《雪白血红》说起(2)
    从《雪白血红》说起(1)
    苏联印象(1)-过往与想象
    DPDK ip分片与重组的设计实现
    linux协议栈分析-序
    DPDK与QoS(服务质量)
    DPDK LPM路由存储与查找
    《教父》曾说
  • 原文地址:https://www.cnblogs.com/zitiger/p/196376.html
Copyright © 2011-2022 走看看