Sergey Alexandrovich Kryukov
Прежде всего, забудьте ASP.NET-да. Область действия этого вопроса-.NET или CLR, и ничего больше. Хорошо знать, что это такое:
http://en.wikipedia.org/wiki/Common_Language_Runtime[^],
http://en.wikipedia.org/wiki/.NET_framework[^]. :-)
Так вот, обе вещи, о которых вы упомянули, не существуют в .NET, и это очень хорошо. Все переменные являются только объектами стека (локальными переменными). Вы знаете, как работает стек? Если нет, то вам нужно изучить его, это отдельная тема. Они не могут быть статичными.
There are only static members of the types. Some are always static (such as enumeration members), but usually they are either static or non-static (instance members). When you defined a structure or a class, you can create instances of them (objects), unless these types are non-static themselves. And you can define static or non-static members like fields, properties and even instances. Each instance (non-static) member is different and independent for each instance, and can be accessed only by an instance, using some instance members. As to the static member, it exist only one per whole class. In this sense, they are functionally nearly equivalent to "custom" global variables. But they are not global variables: they are safer and easier to use.
Кроме того, существуют статические методы и статические типы. Статические типы просты: они просто имеют только статические члены и поставляются с static
ключевое слово, используемое для предотвращения создания экземпляра. А статические методы-это те, которые не имеют доступа к экземпляру (который передается как скрытый параметр "this"). Дальнейшее рассмотрение статического метода vs instance выходит за рамки нашей темы, но я только хочу сказать, что статические методы часто очень нужны. Но в большинстве случаев следует избегать статических полей, свойств и экземпляров событий. Обычно их вообще можно избежать, и такие программы самые лучшие. В редких случаях их можно использовать, но осторожно.
И лучше не использовать их свободно, а использовать через интернет. одиночка шаблон, который сам по себе должен использоваться с осторожностью Пожалуйста, смотрите:
http://en.wikipedia.org/wiki/Singleton_pattern[^],
http://csharpindepth.com/Articles/General/Singleton.aspx[^].
Я видел много очень плохих реализаций синглтона, но та, на которую ссылались выше, хороша. Читайте, чтобы понять, почему.
—СА