Статические конструкторы

Статические конструкторы

Вы уже знаете о том, что конструкторы используются для установки значения данных типа во время его создания, Если указать присваивание значения элементу статических данных в рамках конструктора уровня экземпляра, вы обнаружите, что это значение переустанавливается каждый раз при создании нового объекта! Например, изменим класс SavingsAccount так.

class SavingsAccount {

 public double currBalance;

 public static double currInterestRate;

 public SavingsAccount(double balance) {

  currBalance = balance;

  currInterestRate = 0.04;

 }

}

Если теперь выполнить предыдущий метод Main(), вы увидите совсем другой вывод (рис. 3.11). Обратите внимание на то, что в данном случае переменная currInterestRate переустанавливается каждый раз при создании нового объекта SavingsAccount.

Рис. 3.11. Присваивание значений статическим данным в конструкторе "переустанавливает" эти значения

Вы всегда можете установить начальное значение статических данных, используя синтаксис инициализации члена, но что делать, если значение для статических данных нужно получить из базы данных или внешнего файла? Для решения таких задач требуется, чтобы в контексте метода можно было использовать соответствующие операторы программного кода. По этой причине в C# допускается определение статического конструктора.

class SavingsAccount {

 …

 // Статический конструктор.

 static SavingsAccount() {

  Console.WriteLine("В статическом конструкторе.");

  currInterestRate = 0.04;

 }

}

Вот несколько интересных замечаний, касающихся статических конструкторов.

• Любой класс (или структура) может определять только один статический конструктор.

• Статический конструктор выполняется только один раз, независимо от того, сколько создается объектов данного типа.

• Статический конструктор не может иметь модификаторов доступности и параметров.

• Среда выполнения вызывает статический конструктор, когда создается экземпляр класса, или перед тем, как получить доступ к первому вызываемому статическому члену.

• Статический конструктор выполняется до выполнения любого конструктора уровня экземпляра.

Теперь значение статических данных при создании новых объектов SavingsAccount сохраняется, и соответствующий вывод будет идентичен показанному на рис. 3.10.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

1.10 Конструкторы

Из книги C++ автора Хилл Мюррей

1.10 Конструкторы Определение ostream как класса сделало члены данные зарытыми. Только функция член имеет доступ к закрытым членам, поэтому надо предусмотреть функцию для инициализации. Такая функция называется конструктором и отличается тем, что имеет то же имя, что и ее


5.5 Конструкторы и Деструкторы

Из книги Музыкальный центр на компьютере автора Леонтьев Виталий Петрович

5.5 Конструкторы и Деструкторы Если у класса есть конструктор, то он вызывается всегда, когда создается объект класса. Если у класса есть деструктор, то он вызывается всегда, когда объект класса уничтожается. Объекты могут создаваться как:1. Автоматический объект:


6.3.1 Конструкторы

Из книги Информатика и информационные технологии: конспект лекций автора Цветкова А В

6.3.1 Конструкторы Альтернативу использованию нескольких функций (перегрженных) составляет описание конструктора, который по заданнму double создает complex. Например:class complex (* // ... complex(double r) (* re=r; im=0; *) *);Конструктор, требующий только один параметр, необязтельно вызывать


7.2.6 Конструкторы и Деструкторы

Из книги Информатика и информационные технологии автора Цветкова А В

7.2.6 Конструкторы и Деструкторы Для некоторых производных классов нужны конструкторы. Если у базового класса есть конструктор, он должен вызыватся, и если для этого конструктора нужны параметры, их надо предоставить. Например:class base (* // ... public: base(char* n, short t); ~base(); *);class derived :


8.5.5 Конструкторы

Из книги Справочное руководство по C++ автора Страустрап Бьярн

8.5.5 Конструкторы Функция член с именем, совпадающим с именем ее класса, называется конструктором. Если класс имеет конструктор, то он вызывается для каждого объекта этого класса перед тем, как этот объект будет калибо использован, см. #8.6.Конструктор не может быть virtual или


Конструкторы

Из книги Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT автора Фролов Александр Вячеславович

Конструкторы Mediachance Multimedia Builder MP3 Сайт: http://www.mmbgroup.comРазмер: 20 МбСтатус: SharewareЦена: $60Все мы в детстве играли в конструкторы – от простых кубиков до груды железяк под названием «Школьный конструктор N1». В эпоху компьютеров конструкторы никуда не делись (ведь компьютер и сам


2. Конструкторы и деструкторы

Из книги 300 лучших программ на все случаи жизни автора Леонтьев Виталий Петрович

2. Конструкторы и деструкторы Конструкторы и деструкторы являются специализированными формами методов. Используемые в связи с расширенным синтаксисом стандартных процедур New и Dispose конструкторы и деструкторы обладают способностью размещения и удаления динамических


30. Конструкторы и деструкторы

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

30. Конструкторы и деструкторы Конструкторы и деструкторы являются специализированными формами методов. Используемые в связи с расширенным синтаксисом стандартных процедур New и Dispose конструкторы и деструкторы обладают способностью размещения и удаления динамических


R.9.4 Статические члены

Из книги Описание языка PascalABC.NET автора Коллектив РуБоард

R.9.4 Статические члены Для члена класса, представляющего данные или функцию, можно при описании класса задать спецификацию static. Для статического члена, представляющего данные, в программе существует только один экземпляр, которым владеют все объекты этого класса.


R.12.1 Конструкторы

Из книги автора

R.12.1 Конструкторы Конструктором называется функция-член, имя которой совпадает с именем класса, он используется для построения значений, имеющих тип данного класса. Если в классе есть конструктор, то каждый объект этого класса перед произвольным использованием будет


R.15.3 Конструкторы и деструкторы

Из книги автора

R.15.3 Конструкторы и деструкторы Когда управление передается из точки запуска особой ситуации обработчику, то вызываются деструкторы для всех автоматических объектов, построенных с момента входа в проверяемый-блок.Если объект не был построен полностью, то деструкторы


Конструкторы класса

Из книги автора

Конструкторы класса Для класса CObject определены два конструктора. Первый конструктор используется по умолчанию и не имеет параметров. Именно этот конструктор вызывается конструкторами классов, наследованных от CObject:CObject();Второй конструктор класса CObject называется


Конструкторы

Из книги автора

Конструкторы Mediachance Multimedia Builder MP3Сайт: http://www.mmbgroup.comРазмер: 20 МбСтатус: SharewareЦена: $60Все мы в детстве играли в конструкторы – от простых кубиков до груды железяк под названием «Школьный конструктор № 1». В эпоху компьютеров конструкторы никуда не делись (ведь компьютер и


Наследование и конструкторы

Из книги автора

Наследование и конструкторы Ранее не показанная процедура создания (конструктор) для класса POLYGON может иметь видmake_polygon (vl: LINKED_LIST [POINT]) is-- Создание по вершинам из vl.requirevl.count >= 3do...Инициализация представления многоугольника по элементам из vl ...ensure-- vertices и vl состоят из