如何声明变量以供全局使用

我搜索了类似问题的论坛,据我所知,要避免全局变量。 对我来说这不合逻辑,因为我是编程新手。 如果我已经正确地理解了这一切,那么静态变量应该可以完成我正在寻找的工作。

我在主窗口中创建了四个选项的combobox,当选择combobox时,声明变量b。 这是在private void SelectionChanged.

当选择combobox声明变量b时,弹出用户控件。 我想在我的程序中进一步使用变量b,但我无法访问它。 我试图声明static int b; 在代码的开头,但我不确定我是否理解正确使用静态变量。 有人可以帮帮我吗?

除非您100%确定您的解决方案没有其他地址,否则请避免使用全局变量和static关键字(有时您可能会被迫使用静态代码热修复程序中的静态)。

  1. 静态/全局变量使代码耦合紧密
  2. 打破OOD原则(通常是dependency injection,单一责任原则)
  3. 不像许多人想的那样简单的类型初始化过程
  4. 有时无法通过unit testing来覆盖代码或打破ATRIP原则以进行良好测试(隔离原则)

所以建议:

  1. 首先要理解问题,根源,你将要实现的目标
  2. 检查您的设计

你可以做这个insted

 App.Current.Properties["valueTobestored"] = valueTobestored; 

后来就像访问它一样

 string mystoredValue = Convert.ToString(App.Current.Properties["valueTobestored"]); 

要创建“全局变量”,它应该是publicstatic ,并在公共 静态类中声明。 在.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"; } }