如何声明全局使用的变量

本文关键字:变量 全局 何声明 声明 | 更新日期: 2023-09-27 18:32:29

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

我在主窗口中做了一个包含四个选项的组合框,当选择一个组合框项时,会声明变量 b。这是在private void SelectionChanged.中完成

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

如何声明全局使用的变量

避免使用

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

  1. 静态/全局变量使代码紧密耦合
  2. 违反 OOD 原则(通常是依赖关系注入、单一责任原则)
  3. 不像许多人想象的那么简单
  4. 有时无法通过单元测试覆盖代码或违反 ATRIP 原则以进行良好的测试(隔离原则)

所以建议:

  1. 首先了解问题,根源,你将实现什么
  2. 查看您的设计

可以创建一个全局使用的变量。只需创建静态字段或属性:

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

你可以这样做

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

然后像

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

要创建"全局变量",它应该是公共的和静态的,并在公共静态类中声明。 在 .NET 中,这是声明常量(例如 Math.PI)的常用方法,但它们不是变量

public static class EveryoneCanSeeMe
{
    public static object EveryOneCanModifyMe;
}

非公共变量仅在声明它们的类或方法中可见。

PS:使用全局变量非常糟糕。