Основы объектно-ориентированного программирования на языке 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