2009-11-27 7 views
2

Как объявить глобальные переменные в Visual C#?Глобальные переменные в Visual C#

+0

Вы создаете веб-страницу ASP.NET или приложение Windows Form? Если ASP.NET - см. Http://stackoverflow.com/questions/1797332/creating-global-variables-in-asp-net-using-c. Если приложение формы - см. Http://stackoverflow.com/questions/1293926/c-winforms-global-variables –

ответ

14

Как об этом

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

Просто знайте, что это не поточно. Доступ, например Globals.GlobalInt

Это, вероятно, еще одна дискуссия, но в целом глобальные глобальные потребности не нужны в традиционной разработке OO. Я бы сделал шаг назад и посмотрел, почему вы думаете, что вам нужна глобальная переменная. Там может быть лучший дизайн.

+0

В каком смысле это не потокобезопасность? И как это отличается от нестатического свойства? –

+0

-1 для того, чтобы не объяснить, почему он не является потокобезопасным ... требуется дополнительное объяснение – 2009-11-27 01:56:17

+7

Это не вопрос безопасности потоков. Если вы заинтересованы в безопасности потоков, тогда задайте другой вопрос или обновите этот вопрос, чтобы явно включить решение, защищенное потоком. Также см. Этот вопрос, для чего нужна безопасность потоков, если вы никогда не слышали термин http://stackoverflow.com/questions/261683/what-is-meant-by-thread-safe-code – Bob

1

Используйте константный ключевое слово:

public const int MAXIMUM_CACHE_SIZE = 100; 

Положите его в статическом классе, например,

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

И у вас есть глобальная переменная класса :)

+0

Не соответствует ли константное ключевое слово const? Можно ли это изменить? – neuromancer

+0

«Ключевое слово const используется для изменения объявления поля или локальной переменной. Оно указывает, что значение поля или локальной переменной не может быть изменено». - http://msdn.microsoft.com/en-us/library/e6w8fe1b%28VS.71%29.aspx –

+0

Поле const не является переменным. ;) – JohannesH

0

Вы can'nt объявлять глобальные переменные - использовать статический класс или Singleton pattern

1

Ближайшие вы можете сделать это в C# - объявлять общедоступную переменную в общедоступном статическом классе. Но даже тогда вы должны убедиться, что пространство имён импортировано, и при его использовании указывается имя класса.

3

Публичный статическое поле, вероятно, ближе вы получите к глобальной переменной

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

Однако, вы должны стараться избегать использования глобальных переменных, как можно больше, как это осложнит вашу программу и сделать что-то вроде автоматическое тестирование труднее достичь.

Смежные вопросы