如何声明变量以供全局使用
我搜索了类似问题的论坛,据我所知,要避免全局变量。 对我来说这不合逻辑,因为我是编程新手。 如果我已经正确地理解了这一切,那么静态变量应该可以完成我正在寻找的工作。
我在主窗口中创建了四个选项的combobox,当选择combobox时,声明变量b。 这是在private void SelectionChanged.
当选择combobox声明变量b时,弹出用户控件。 我想在我的程序中进一步使用变量b,但我无法访问它。 我试图声明static int b;
在代码的开头,但我不确定我是否理解正确使用静态变量。 有人可以帮帮我吗?
除非您100%确定您的解决方案没有其他地址,否则请避免使用全局变量和static
关键字(有时您可能会被迫使用静态代码热修复程序中的静态)。
- 静态/全局变量使代码耦合紧密
- 打破OOD原则(通常是dependency injection,单一责任原则)
- 不像许多人想的那样简单的类型初始化过程
- 有时无法通过unit testing来覆盖代码或打破ATRIP原则以进行良好测试(隔离原则)
所以建议:
- 首先要理解问题,根源,你将要实现的目标
- 检查您的设计
你可以做这个insted
App.Current.Properties["valueTobestored"] = valueTobestored;
后来就像访问它一样
string mystoredValue = Convert.ToString(App.Current.Properties["valueTobestored"]);
要创建“全局变量”,它应该是public和static ,并在公共 静态类中声明。 在.NET中,它是声明常量的常用方法(例如Math.PI),但它们不是变量 !
public static class EveryoneCanSeeMe { public static object EveryOneCanModifyMe; }
非公共变量仅在声明它们的类或方法中可见。
ps:使用全局变量非常糟糕。
可以创建供全局使用的变量。 只需创建静态字段或属性:
public static class YourStorage { public static object Storage1; public static string StringStorage; }
无论您想要什么,您都可以从该存储设置或获取值:
public class AnotherClass { private void GetDataFromStorage() { string getValue=YourStorage.StringStorage; } private void SetDataFromStorage() { YourStorage.StringStorage="new value"; } }