Основы языка C# 2005. Евсеева О.Н - 54 стр.

UptoLike

Составители: 

58
принадлежат экземпляры структур, жизнь оканчивается при завершении блока,
в котором они объявлены.
Есть одно важное исключение. Некоторые поля могут жить дольше. Если
при объявлении класса поле объявлено с модификатором static, то такое поле
является частью класса и единственным на все его экземпляры. Поэтому static-
поля живут так же долго, как и сам класс. Более подробно эти вопросы будут
обсуждаться при рассмотрении классов, структур, интерфейсов.
3.3.2. Глобальные переменные уровня модуля.
Где еще могут объявляться переменные? Во многих языках
программирования переменные могут объявляться на уровне модуля. Такие
переменные называются глобальными. Их область действия распространяется,
по крайней мере, на весь модуль. Глобальные переменные играют важную роль,
поскольку они обеспечивают весьма эффективный способ обмена информацией
между различными частями модуля. Обратная сторона эффективности аппарата
глобальных переменных, - их опасность. Если какая-либо процедура, в которой
доступна глобальная переменная, некорректно изменит ее значение, то ошибка
может проявиться в другой процедуре, использующей эту переменную. Найти
причину ошибки бывает чрезвычайно трудно. В таких ситуациях приходится
проверять работу многих компонентов модуля.
В языке C# роль модуля играют классы, пространства имен, проекты,
решения. Поля классов, о которых шла речь выше, могут рассматриваться как
глобальные переменные класса. Но здесь у них особая роль. Данные (поля)
являются тем центром, вокруг которого вращается мир класса. Отметим,
каждый экземпляр класса - это отдельный мир. Поля экземпляра (открытые и
закрытые) - это глобальная информация, которая доступна всем методам
класса, играющим второстепенную роль - они обрабатывают данные.
Статические поля класса хранят информацию, общую для всех
экземпляров класса. Они представляют определенную опасность, поскольку
каждый экземпляр способен менять их значения.
В других видах модуля - пространствах имен, проектах, решениях -
нельзя объявлять переменные. В пространствах имен в языке C# разрешено
только объявление классов и их частных случаев: структур, интерфейсов,
делегатов, перечислений. Поэтому глобальных переменных уровня модуля, в
привычном для других языков программирования смысле, в языке C# нет.
Классы не могут обмениваться информацией, используя глобальные
переменные. Все взаимодействие между ними обеспечивается способами,
стандартными для объектного подхода. Поля класса и аргументы метода
позволяют передавать и получать нужную информацию. Устранение
глобальных переменных как источника опасных, трудно находимых ошибок
существенно повышает надежность создаваемых на языке C# программных
продуктов.