: this([
])
Към познатата ни форма за деклариране на конструктор (първия ред от декларацията показана по-горе), можем да добавим двоеточие, следвано от ключовата дума this, следвана от скоби. Ако конструкторът, който искаме да извикаме е с параметри, в скобите трябва да добавим списък от параметри parameters_list_2, които да му подадем.
Ето как би изглеждал кодът от предходната секция, в който вместо да повтаряме инициализацията на всяко едно от полетата, извикваме конструктори, декларирани в същия клас:
// Nо parameters
public Dog()
: this("Sharo") // Constructor call
{
// More code could be added here
}
// One parameter
public Dog(string name)
: this(name, 1) // Constructor call
{
}
// Two parameters
public Dog(string name, int age)
: this(name, age, 0.3) // Constructor call
{
}
// Three parameters
public Dog(string name, int age, double length)
: this(name, age, length, new Collar()) // Constructor call
{
}
// Four parameters
public Dog(string name, int age, double length, Collar collar)
{
this.name = name;
this.age = age;
this.length = length;
this.collar = collar;
}
|
Както е указано чрез коментар в първия конструктор от примера по-горе, ако е необходимо, в допълнение към извикването на някой от другите конструктори с определени параметри всеки конструктор може в тялото си да добави код, който прави допълнителни инициализации или други действия.
Конструктор по подразбиране
Нека разгледаме следния въпрос – какво става, ако не декларираме конструктор в нашия клас? Как ще създадем обекти от този тип?
Тъй като често се случва даден клас да няма нито един конструктор, този въпрос е решен в езика C#. Когато не декларираме нито един конструктор, компилаторът ще създаде един за нас и той ще се използва при създаването на обекти от типа на нашия клас. Този конструктор се нарича конструктор по подразбиране (default implicit constructor), който няма да има параметри и ще бъде празен (т.е. няма да прави нищо в допълнение към подразбиращото се зануляване на полетата на обекта).
Сподели с приятели: |