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;
                }
            }
        }
    }


     

  • 相关阅读:
    ubuntu 安装精简桌面; VNC; vncserver 配置
    2019-11-29-Roslyn-通过-NuGet-库修改应用程序入口函数
    2019-11-29-C#-字典-Dictionary-的-TryGetValue-与先判断-ContainsKey-然后-Get-的性能对比
    2019-11-29-WPF-测试触摸设备发送触摸按下和抬起不成对
    2019-11-29-浅谈-Windows-桌面端触摸架构演进
    2019-11-29-C#-通过编程的方法在桌面创建回收站快捷方式
    2019-11-29-C#-直接创建多个类和使用反射创建类的性能
    2019-11-29-WPF-客户端开发需要知道的触摸失效问题
    2019-11-29-asp-dotnet-core-通过图片统计-csdn-用户访问
    2019-11-29-逗比面试官成长路线-如何让被面试者觉得糟心
  • 原文地址:https://www.cnblogs.com/zitiger/p/196376.html
Copyright © 2011-2022 走看看