Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
291
public
Motorcycle(
int
intensity)
{
driverIntensity = intensity;
}
}
This kalit so‘zining roli
S# tilida This kalit so‘zi mavjud u hozirgi sinfni elementlariga kiritishni ta’minlab beradi.
This so‘zini mavjud qo‘llanuvchilarida biri shundaki kontekstni bir qiymatliligini yechish uchun u
ham bo‘lishi mumkin. Unda quruvchi parametr sinfi berilganlar
maydonidagi ismdek quruvchi
parametr xam nomlanganda bo‘ladi. Eng yaxshi xolati nomlash xaqidagi kelishuvda qolganlikdir. U
bunday bir qiymatlilikka olib kelmaydi. Shunga qaramasdan bunday this kalit so‘zini ishlatishni
ko‘rsatish uchun Motorcycle klassiga yangi string tipidagi maydonni qo‘shamiz
u tashuvchining
ismini tasvirlaydi. Bundan so‘ng
SetDriverName() nomli metodni qo‘shamiz u quyidagi
ko‘rinishda amalga oshirilgan.
class
Motorcycle
{
public
int
driverIntensity;
// New members to represent the name of the driver.
public
string
name;
public
void
SetDriverName(
string
name)
{
name = name;
}
...
}
Visual Studio o‘zgaruvchi o‘zi o‘ziga o‘zlashtirish xaqidagi
ogoxlantiruvchi xabarni
ko‘rsatadi. buni ko‘rsatish uchun Main()ga SetDriverName() chaqiruvini qo‘shamiz va name
maydondan qiymatini chaqiramiz. Aniqlanadiki name maydoni qiymatida bo‘sh qator qoldi.
// Make a Motorcycle with a rider named Tiny?
Motorcycle c =
new
Motorcycle(5);
c.SetDriverName(
"Tiny"
);
c.PopAWheely();
Console.WriteLine(
"Rider name is {0}"
, c.name);
// Prints an empty name value!
Muammo
shundaki, SetDriverName()ni amalga oshirishda uning o‘zining qiymatini
quruvchi parametrga o‘zlashtirishni
bajaradi, chunki kompliyator nomi bu yerda o‘zgaruvchiga
jo‘natiladi deb o‘ylaydi.
public
void
SetDriverName(
string
name)
{
this
.name = name;
}
Xisobga olingki agar bir qiymatlilik bo‘lmasa u holda siz this kalit so‘zini ishlatishingiz
shart emas. Masalan: agar string tipidagi Name berilganlar hadini
driverNamega qayta nomlash
kerak bo‘lsa, u holda thisni qo‘llanishi majburiy bo‘lmaydi, chunki kontekstni bir qiymatliligi
yo‘qoladi.
class
Motorcycle
{
public
int
driverIntensity;
public
string
driverName;
Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
292
public
void
SetDriverName(
string
name)
{
// These two statements are functionally the same.
driverName = name;
this
.driverName = name;
}
...
}
Bir qiymatli bo‘lmagan holatta thisni ishlatishdagi olingan katta bo‘lmagan
yutuq bu kalit
so‘zlarni ishlatishda foydali bo‘lishi mumkin, chunki IDE SharpDevelop va Visual Studio
muhitlari IntelliSense vositasini qo‘shadi. Qachonki this kiritilsa. Bu agar
siz sinfni nomini esdan
chiqargan bo‘lsangiz bu juda yaxshi yordam beradi. 5.2 rasmga qarang.