2009-11-27 20 views
2

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

+0

您是否正在创建ASP.NET网页或Windows窗体应用程序? 如果ASP.NET - 请参阅http://stackoverflow.com/questions/1797332/creating-global-variables-in-asp-net-using-c。 如果表单应用程序 - 请参阅http://stackoverflow.com/questions/1293926/c-winforms-global-variables – 2009-11-27 01:40:20

回答

14

这个怎么样

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

要知道这不是线程安全的。像Globals.GlobalInt

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

+0

从什么意义上说它不是线程安全的?那和一个非静态属性有什么不同? – 2009-11-27 01:54:29

+0

-1不解释为什么它不是线程安全的......需要更多解释 – 2009-11-27 01:56:17

+7

这不是关于线程安全性的问题。如果您对线程安全感兴趣,请在另一个问题中询问或更新此问题以明确包含线程安全解决方案。如果你从来没有听说过这个术语,请看这个问题什么线程安全http://stackoverflow.com/questions/261683/what-is-meant-by-thread-safe-code – Bob 2009-11-27 02:02:33

1

使用const关键字:

public const int MAXIMUM_CACHE_SIZE = 100; 

把它放在一个静态类如

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

和你有一个全局变量类:)

+0

不是const关键字使它保持不变?它可以改变吗? – neuromancer 2009-11-27 01:31:59

+0

“const关键字用于修改字段或局部变量的声明,它指定字段或局部变量的值不能被修改。” - http://msdn.microsoft.com/en-us/library/e6w8fe1b%28VS.71%29.aspx – 2009-11-27 01:34:42

+0

const字段是不可变的。 ;) – JohannesH 2009-11-27 01:36:52

1

最近你可以在C #是在公共静态类中声明一个公共变量。但即使如此,您仍必须确保命名空间已导入,并且在使用它时指定了类名。

3

公共静态字段可能是你会得到一个全局变量

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

然而最近的地方,你应该尽量避免使用全局变量尽可能多的,因为它会变得复杂程序,使之类的东西自动化测试更难实现。