Основы объектно-ориентированного программирования на языке C# book | Page 123

7.3 Конструктори класiв Initialization of NonStatic Initialization of NonStatic Call NonStatic Constructor x=100 y=100 Create instance #2 Initialization of NonStatic Initialization of NonStatic Call NonStatic Constructor x=100 y=100 value y value x value y value x Тобто, ми бачимо, що: 1. iнiцiалiзацiя статичних полiв виконується до команд статичного конструктора; 2. через те, що клас має статичний конструктор, статична iнiцiа- лiзацiя виконується безпосередньо при першому зверненi до да- ного класу, тобто при виклику статичного методу TestStati- cNonStaticInitialization.StaticMethod(); 3. iнiцiалiзатори статичних полiв i статичний конструктор запу- скаються до статичного методу; 4. при створеннi екземпляру класу нестатичним конструктором спочатку iнiцiалiзуються поля, потiм виконуються iншi команди конструктора. Якщо видалити нестатичний конструктор, то можна побачити, що iнiцiалiзацiя статичних полiв не буде виконуватись безпосередньо до звернення до них (для демонстрацiı̈ цього в текст програми додано змiну work1 ): static void Main(string [] arg) { int work1; Console.WriteLine("Main"); Console.WriteLine("Create instance #1"); work1 = TestStaticNonStaticInitialization.b; Console.WriteLine("work1=" + work1); 123