Delegatlar, hodisalar va lyambdalar


Delegatga usullarni qo‘shish



Download 22,81 Kb.
bet4/4
Sana23.01.2022
Hajmi22,81 Kb.
#404912
1   2   3   4
Bog'liq
Delegatlar

Delegatga usullarni qo‘shish

Yuqori misollarda delegat o‘zgaruvchisi bir usulni ko‘rsatgan. Haqiqatda delegat bir xil signaturaga va qaytaradigan turga ega bo‘lgan ko‘plab usullarni ko‘rsatishi mumkin. Delegatdagi barcha usullar maxsus ro‘yxatga olinadi , ya’ni chaqirish ro‘yxati yoki invocation list. Delegat chaqirilganda ushbu ro‘yxatdan barcha usullar ketma-ket chaqiriladi. Biz ushbu tizimga bir emas, balki bir necha usullarni qo‘shishimiz mumkin:

class Program

{

delegate void Message();


static void Main(string[] args)

{

Message mes1 = Hello;



mes1 + = HowAreYou ;//endi mes1 ikki usulni koʻrsatadi

mes1 () ;//ikkala usulda ham chaqiriladi - Hello va HowAreYou

Console.Read();

}

private static void Hello()



{

Console.WriteLine("Hello");

}

private static void HowAreYou()



{

Console.WriteLine("How are you?");

}

}

Ushbu holatda Hello va HowAreYou nomli ikki usul ro‘yxatga qo‘shiladi. Shuningdek, shu usullarning ikkalasi ham chaqiriladi.


Delegatlarni qo‘shish uchun + = operatsiyasi qo‘llaniladi. Biroq ta’kidlash joizki, haqiqatda delegatning eski nusxasi usullari va yangi usul oladigan yangi ob’ekti yaratiladi va yangi yaratilgan deleagat ob’ekti mes1 o‘zgaruvchi ob’ektiga beriladi.
Delegatlarni qo‘shishda ham e’tiborga olish kerakki, biz bir xil usulga havolani bir necha marta qo‘shishimiz mumkin, shunda delegatni chaqirish ro‘yxatida bir xil usulga bir nechta bog‘liq bo‘ladi. Shuningdek, delegat chaqirilganda qo‘shimcha usul qancha qo‘shilsa shuncha ko‘p marta chaqiriladi:

Message mes1 = Hello;

mes1 += HowAreYou;

mes1 += Hello;

mes1 += Hello;

 

mes1();



Shu tariqada biz delegatdan usulni o‘chirishimiz ham mumkin - =:

static void Main(string[] args)

{

Message mes1 = Hello;



mes1 += HowAreYou;

mes1 () ;//mes1

mes1 - = HowAreYou ;//usulni olib tashlayman HowAreYou

mes1 () ;//Hello usuli chaqiriladi


Console.Read();

}

O‘chirishda e’tiborga olish kerakki, agar delegat bir xil usulga bir nechta havolani o‘z ichiga olgan bo‘lsa, - = operatsiyasi delegat chaqirish ro‘yxati oxiridan qidirishni boshlaydi va faqat birinchi topilgan kirishni olib tashlaydi. Agar delegatni chaqirish ro‘yxatida bunday usul yo‘q bo‘lsa, amal – = hech qanday samaraga ega emas.


Delegatlar birlashtirish

Delegatlarni boshqa delegatlarga birlashtirish mumkin. Masalan:

class Program

{

delegate void Message();


static void Main(string[] args)

{

Message mes1 = Hello;



Message mes2 = HowAreYou;

Message mes3 = mes1 + mes2 ;//delegatlarni birlashtiramiz

mes3 () ;//mes1 va mes2-dan barcha usullar chaqiriladi
Console.Read();

}

private static void Hello()



{

Console.WriteLine("Hello");

}

private static void HowAreYou()



{

Console.WriteLine("How are you?");



}

}
Download 22,81 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish