Konstuktorlar tushunchasi Dasturchi ob’ektning maydonlarini qiymatini o‘zlashtirishni o‘ylaydi u bilan ishlashdan
oldin hozirgi vaqtda Car tilini petName va currSpeed maydonlarini o‘zlashtirishni talab etadi.
Xozirgi misol uchun bu unchali muammoli emas chunki berilganlarni aniq elementlarini atiga 2 ta
xolos tushunarliki hech kimga bunday sinfni barcha 20 ta elementi uchun 20 ta operatorlarni
initsializatsiya qilish yoqmaydi.
Baxtimizga, C# Carda konstruktorlarni mexanizmi qo‘llab quvvatlanadi, ular ob’ektni xolatini
o‘rnatishga ruxsat berishadi. Konstruktor bu - sinfni alohida usuli bo‘lib u ob’ektni yaratishda
oshkor bo‘lmagan xolda chaqiriladi va u new kalit so‘zini ishlatish bilan amalga oshiriladi. Biroq
“normal” usuldan farqi shundaki unda oshkor konstruktor xech qachon qaytariladigan qiymatga ega
bo‘lmaydi va doim sinf ismiga identetik nomlanadi.
Standart konstruktorni roli Har bir S# sinfi standart konstruktor bilan ta’minlanadi. U zarur bo‘lgan vaqtda qayta
aniqlanishi mumkin ta’rif bo‘yicha standart konstruktor xech qachon argumentlarni qabul qilmaydi.
Yangi ob’ekt joylashtirilgandan so‘ng xotirada standart konstruktor bo‘yicha berilganlar
maydonlarini kafolatlaydi. Ular mos standart qiymatlarda bo‘ladi.
Agar siz bunday standart o‘zlashtirish bilan qanoatlansangiz o‘zingizga kerakli molikdagi standart
konstruktorni yozishingiz mumkin. O‘zgartiish maqsadida S# Car sinfi quyida ko‘rsatilgan:
class
Car
{
// The 'state' of the Car.
public
string
petName;
public
int
currSpeed;
// A custom default constructor.
public
Car()
{
petName =
"Chuck"
;
currSpeed = 10;
}
...
}
Berilgan xolatda biz Car ob’ektlarni o‘z xayotini Chuck ismidan boshlashga majburlaymiz
va soatiga 10 ml tezlik bilan. Bunda Car ob’ektlarini standart qiymatlar bilan keyingi ko‘rinishda
yaratish mumkin:
static
void
Main(
string
[] args)
{
Console.WriteLine(
"***** Fun with Class Types *****\n"
);
Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
289
// Invoking the default constructor.
Car chuck =
new
Car();
// Prints "Chuck is going 10 MPH."
chuck.PrintState();
...
}