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


     

  • 相关阅读:
    ThreadLocal
    layer.open()中属性content在IE 8中提示“网页无法显示”
    前端String类型转JSON类型
    表单异常自动提交
    div中图片居中
    使用struts2的内置标签,采用submit()提交表单时,浏览器报404
    使用@Test报java.lang.NullPointerException at org.eclipse.jdt.internal.junit4.runner.SubForestFilter.shouldRun(SubForestFilter.java:81)异常
    java web程序上传文件,浏览器显示连接被重置
    java导入ldif文件
    LDAP常见错误码
  • 原文地址:https://www.cnblogs.com/zitiger/p/196376.html
Copyright © 2011-2022 走看看