Основы объектно-ориентированного программирования на языке C# book | Page 120
7 Класи
}
private static int Initb0()
{
Console.WriteLine("Initialization static B0");
return 4;
}
}
public class Program
{
static void Main(string[] args)
{
TestStaticConstructor a = new TestStaticConstructor();
}
}
}
У результатi роботи програми буде надруковано на екранi:
Initialization static A0
Initialization static B0
Call static TestStaticConstructor()
a= 3
b= 4 Initialization Y Initialization X
Для продовження натиснiть будь-яку клавiшу
Розберемо цей приклад детальнiше. Статичний конструктор
TestStaticConstructor() викликається перед створенням екземпля-
ра класу. Однак iнiцiалiзацiя статичних полiв виконується перед ви-
конанням тiла цього конструктору. Це гарантує правильну iнiцiалi-
зацiю полiв перед тим, як вiдбудеться звертання до них з тiла стати-
чного конструктора.
У цьому прикладi статичний конструктор буде виконуватися перед
тим, як програма звернеться до поля або методу класу, або перед
створенням екземпляра цього класу.
Якщо в програму додати нестатичний конструктор, то можна по-
бачити, що при створеннi екземпляру класу буде використовуватися
саме вiн.
7.3.3 Порядок iнiцiалiзацiı̈ полiв та виклик
конструкторiв
.
При першому створеннi екземпляру класу необхiдно користуватись
таким порядком iнiцiалiзацiı̈ та виклику конструкторiв (випадок на-
слiдування класiв розберемо пiзнiше):
1. Статичнi поля класу набувають початкового значення нуль;
120