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


     

  • 相关阅读:
    基于layui的简易后台管理系统,后期会更新
    java基础语法知识(笔记)——(一)基本变量类型,循环,日期类
    JavaWeb学习总结(笔记)——SSM spring.xml的基本配置
    JavaWeb学习总结(笔记)——SSM中Web.xml文件
    JavaWeb学习总结(笔记)——SSM关键类及其作用
    JavaWeb学习总结(笔记)——关于SSM CRUD上传功能的总结
    JavaWeb——MVC与三层结构
    jquery结合highcharts插件显示实时数据动态曲线图
    jquery结合Highcharts插件实现动态数据仪表盘图形化显示效果
    在IE6/7下表格td标签没有内容时不显示边框?
  • 原文地址:https://www.cnblogs.com/zitiger/p/196376.html
Copyright © 2011-2022 走看看