【问题标题】:Global variables in Visual C#Visual C# 中的全局变量
【发布时间】:2010-12-20 20:29:42
【问题描述】:

如何在 Visual C# 中声明全局变量?

【问题讨论】:

标签: c# visual-studio global-variables


【解决方案1】:

这个怎么样

public static class Globals {
    public static int GlobalInt { get; set; }
}

请注意,这不是线程安全的。访问喜欢Globals.GlobalInt

这可能是另一个讨论,但一般来说,在传统的 OO 开发中并不真正需要全局变量。我会退后一步,看看你为什么认为你需要一个全局变量。可能会有更好的设计。

【讨论】:

  • 在什么意义上它不是线程安全的?这与非静态属性有何不同?
  • -1 没有解释为什么它不是线程安全的......需要更多解释
  • 这不是线程安全的问题。如果您对线程安全感兴趣,请提出另一个问题或更新此问题以明确包含线程安全解决方案。如果您从未听说过 stackoverflow.com/questions/261683/… 这个词,请参阅此问题,了解什么是线程安全
  • +1 表示“我会退后一步,看看你为什么认为你需要一个全局变量。可能会有更好的设计。”我发现在大型项目中,与实例变量相比,跟踪全局变量的使用要困难得多。这很有帮助,尤其是在维护期间。
【解决方案2】:

公共静态字段可能是最接近全局变量的字段

public static class Globals
{
  public static int MyGlobalVar = 42;
}

但是,您应该尽量避免使用全局变量,因为这会使您的程序复杂化,并使自动化测试等事情更难实现。

【讨论】:

    【解决方案3】:

    在 C# 中最接近的方法是在公共静态类中声明一个公共变量。但即便如此,您也必须确保命名空间已导入,并且在使用时指定类名。

    【讨论】:

      【解决方案4】:

      使用 const 关键字:

      public const int MAXIMUM_CACHE_SIZE = 100;
      

      把它放在一个静态类中,例如

      public class Globals
      {
          public const int MAXIMUM_CACHE_SIZE = 100;
      }
      

      你有一个全局变量类:)

      【讨论】:

      • 不是 const 关键字使它保持不变吗?可以改吗?
      • "const 关键字用于修改字段或局部变量的声明。它指定不能修改字段或局部变量的值。" - msdn.microsoft.com/en-us/library/e6w8fe1b%28VS.71%29.aspx
      • 一个 const 字段不是可变的。 ;)
      • 大声笑是的 - 我读的太快了,我通常只在全局公开值时提供内容。其他一切都在实例变量中。 :)
      猜你喜欢
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多