关于全局变量变量响应机制方法
关于全局变量变量响应机制方法
在软件开发系统中,如果定义一个全局变量,当变量发生变化时,希望所有使用此变量的按钮或其他控件也能随变量值不同,而产生相应的变化的。这样系统执行过程不会产生延时,或数据不同的现象,特别在动态数据处理方面。
下面总结几种方法供大家参考
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; } }
第三种方法,就不需要定义全局的委托,可以节省一些空间,写法更简洁明了。