读书人

关于全局变量变量响应机制步骤

发布时间: 2013-02-24 17:58:56 作者: rapoo

关于全局变量变量响应机制方法

关于全局变量变量响应机制方法
在软件开发系统中,如果定义一个全局变量,当变量发生变化时,希望所有使用此变量的按钮或其他控件也能随变量值不同,而产生相应的变化的。这样系统执行过程不会产生延时,或数据不同的现象,特别在动态数据处理方面。

下面总结几种方法供大家参考

1、在静态类中定义公共变量

class GlobalCls    {        public static bool GlobalValue = false;    }    //在其他类中使用时    class Mothod1    {        private void Showdata()        {            Console .WriteLine (GlobalCls .GlobalValue );        }    }

这种使用方法最基本的,需要我们随时来读取数据,才能感知变量的变化;如果需要实时了解,可能还要采用定时读取的方法。

2、使用委托方法

    public delegate void MyDataChange();    class GlobalCls    {        private  static bool _GlobalValue = false;        public static MyDataChange DataChangeEvent;        public static bool GlobalValue        {            get            { return _GlobalValue; }            set            {                _GlobalValue = value;                if (DataChangeEvent != null)                {                    DataChangeEvent();                }            }        }    }    //在其他类中或窗体中使用时       class Mothod1    {        private bool newdata;        private void Showdata()        {            GlobalCls.DataChangeEvent +=(ShowValue);            // GlobalCls.DataChangeEvent += new MyDataChange(ShowValue);        }        private void ShowValue()        {            newdata = GlobalCls.GlobalValue;        }    }


这样在任何地方使用此变量 ,showvalue()都会响应的,即使不同窗体之间,这样可以更加快速来执行动作。

3、其实是第二种的简写吧

    class GlobalCls    {        private  static bool _GlobalValue = false;            public static event Action DataChangeEvent;         public static bool GlobalValue        {            get            { return _GlobalValue; }            set            {                _GlobalValue = value;                if (DataChangeEvent != null)                {                    DataChangeEvent();                }            }        }    }    //在其他类中或窗体使用时       class Mothod1    {        private bool newdata;        private void Showdata()        {            GlobalCls.DataChangeEvent += new Action(ShowValue);        }        private void ShowValue()        {            newdata = GlobalCls.GlobalValue;        }    }

第三种方法,就不需要定义全局的委托,可以节省一些空间,写法更简洁明了。

读书人网 >其他相关

热点推荐