2009-11-27 24 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; 
} 

然而最近的地方,你應該儘量避免使用全局變量儘可能多的,因爲它會變得複雜程序,使之類的東西自動化測試更難實現。