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