7.3.2 Статичний конструктор
7 Класи
фактичним аргументом буде збiльшене на одиницю значення поля
IdNumber, тобто 1. Нагадаємо, що це поле мало значення нуль. I вже конструктор з пят’ ю фактичними аргументами утворить екземпляр класу та надасть полям значення 0, 0, 0, 0, 1 вiдповiдно. Так само програма буде працювати при створенi другого екземпляру класу Elevator SecondElevator = new Elevator(). Але вже буде передено не нулi, а значення 1, 2, 3, 4. При виклику конструктора для створення третього екземпляру класу, останнiм фактичним аргументом передається число 10 i тому поле Number прийме саме це значення.
7.3.2 Статичний конструктор
У С # передбачено можливiсть написаня статичних конструкторiв класу. Цей конструктор викликається один раз, а не при кожному створеннi екземплярiв класу.
Статичний конструктор не можна викликати безпосередньо. Якщо звичайний конструктор викликається в момент створення екземпляру класу, то статичний – викликається автоматично перед створенням першого екземпляра класу або перед використанням посилання на якi-небудь статичнi члени за виключенням констант. Виконуюча система. NET не може пiдказати програмiстовi, у який саме момент часу буде викликаний статичний конструктор, тому не слiд розмiщувати в ньому код, який повинен бути виконаний у конкретний момент часу( наприклад в залежностi вiд значень iнших змiнних).
Такий конструктор буває корисний для виконання яких-небудь пiдготовчих дiй, якi повиннi бути виконанi лише один раз. У статичному конструкторi можна задати початковi значення для статичних членiв класу. Якщо статичний конструктор iнiцiює виключення, середовище виконання не викликає його в другий раз, i клас залишається неiнiцiалiзованим. Ще необхiдно вiдзначити, що статичний конструктор не повинен мати модифiкатори доступу й параметрiв. Синтаксис статичного конструктора такий:
class class _ name { static class _ name() { // код iнiцiалiзацiї
118