Основы объектно-ориентированного программирования на языке C# book | Page 119
7.3 Конструктори клас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в роботи iнших статичних кон-
структорiв.
Розглянемо такий приклад:
using System;
namespace StaticConstructor
{
public class TestStaticConstructor
{
private int y = Inity();
private int x = Initx();
public static int a = Inita0();
public static int b = Initb0();
static TestStaticConstructor()
{
Console.WriteLine(" Call static TestStaticConstructor()");
Console.WriteLine("a= " + a);
Console.WriteLine("b= " + b);
}
private static int Initx()
{
Console.WriteLine("Initialization X");
return 1;
}
private static int Inity()
{
Console.WriteLine("Initialization Y");
return 2;
}
private static int Inita0()
{
Console.WriteLine("Initialization static A0");
return 3;
119