Delegatlar, hodisalar va lyambda-ifodalar



Download 41,5 Kb.
bet2/2
Sana13.03.2023
Hajmi41,5 Kb.
#918591
1   2
Bog'liq
Delegatlar, hodisalar va lyambda-ifodalar-hozir.org

Bu-oddiy-test.

Satr:

Buoddiytest.

Satr:

.tset yiddo uB
Dastur tahlili:
Endi e’tiboringizni Main metodidagi ba’zi qismlarga qaratmoqchiman.
StrMod strOp = new StrMod(ReplaceSpaces);
ReplaceSpace metodimiz StrMod delagatimiz bilan bir xil strukturaga ega bo’lishi lozim. Bu yerda, StrMod delegatimiz o’z navbatida ReplaceSpaces metodini chaqirmoqda.
str = strOp(“Bu oddiy test.");
Bu kod yordamida esa, “Bu oddiy test.“ satri ReplaceSpaces metodiga yuborilmoqda.
strOp = new StrMod(RemoveSpaces); str = strOp(" Bu oddiy test.");
Bu holatda esa, delegat yordamida RemoveSpaces metodi ishga tushdi. strOp = new StrMod(Reverse); str = strOp(" Bu oddiy test.");
Bunda esa, Reverse metodi chaqirilmoqda.

Demak, delegat yordamida chaqirilayotgan metod

delegat bilan bir xil strukturaga ega bo’lishi lozim ekan!
Hodisalar.
Umuman olganda, hodisa ro'y beradigan alohida bir narsadir. Masalan, Microsoft dasturchilarga yangi yoki mavjud mahsulotlarning xususiyatlari haqida xabardor qilish uchun hodisa uyushtiradi. Microsoft dasturchilarni hodisa haqida elektron pochta yoki boshqa reklama parametrlari orqali xabardor qiladi. Shunday qilib, bu holda, Microsoft hodisani tashkil etgan va bu haqida dasturchilarni xabardor qiladigan nashriyotdir, dasturchilar ushbu hodisaga obuna bo’ladilar va tadbirda qatnashadilar.
C # dagi voqealar shunga o'xshash kontseptsiyaga amal qiladi. Hodisada noshir, obunachi, xabar va hodisani o’tkazuvchi mavjud. Odatda, UI nazorati hodisalardan keng foydalanadi. Masalan, Windows formda tugmalarni boshqarish tugmachani bosish, sichqonchani bosish va boshqalar kabi bir nechta hodisaga ega. Maxsus sinf shuningdek, boshqa obunachilar sinflariga sodir bo'lgan yoki yuz berayotgan narsa to'g'risida xabar berish uchun hodisa o'tkazishi mumkin. Keling, qanday qilib hodisani aniqlay olishingizni va hodisalarni boshqaradigan boshqa sinflarga qanday xabar berishingizni ko'rib chiqaylik.
Hodisa faqat kapsulali delegatdan boshqa narsa emas. Oldingi bo'limda bilib olganimizdek, vakil bu ma'lumotnoma turidagi ma'lumotnoma turi. Siz quyida ko'rsatilgan tarzda delegatni e'lon qilishingiz mumkin:
Hodisa faqat kapsulali delegatdan boshqa narsa emas. Oldingi bo'limda bilib olganimizdek, vakil bu ma'lumotnoma turidagi ma'lumotnoma turi. Siz quyida ko'rsatilgan tarzda delegatni e'lon qilishingiz mumkin:
public delegate void someEvent();
public someEvent someEvent;
Hodisani event kalit so’zi bilan e’lon qilgandan keyin delegat tipidagi o’zgaruvchilar quyidagi tarzda e’lon qilinadi.
public delegate void someEvent();
public event someEvent someEvent;
Shunday qilib, delegat-event kalit so’zidan foydalangan holda hodisa bo’lib keladi.
Keling, biron bir hodisaning amaliy misolini ko'rib chiqaylik.
2-Masala. Son, pul, o'nlik, harorat va o'n oltilik kabi har xil formatlarda butun sonlarni chiqaradigan quyidagi PrintHelper klassini ko'rib chiqing. U beforePrintEvent orqali raqamni chop etishdan oldin, BeforePrint hodisasi a’zosiga xabar bersin.
public class PrintHelper {
// declare delegate
public delegate void BeforePrint();
//declare event of type
delegate public event BeforePrint beforePrintEvent;
public PrintHelper()
{
}
public void PrintNumber(int num) {
public void PrintNumber(int num) {
//call delegate method before going to print
if (beforePrintEvent != null) beforePrintEvent();
Console.WriteLine("Number: {0,-12:N0}", num);
}
public void PrintDecimal(int dec) {
if (beforePrintEvent != null) beforePrintEvent();
Console.WriteLine("Decimal: {0:G}", dec);
}
public void PrintMoney(int money) {
if (beforePrintEvent != null) beforePrintEvent();
Console.WriteLine("Money: {0:C}", money);
}
public void PrintTemperature(int num) {
public void PrintTemperature(int num) {
if (beforePrintEvent != null) beforePrintEvent(); Console.WriteLine("Temperature: {0,4:N1} F", num);
}
public void PrintHexadecimal(int dec) {
if (beforePrintEvent != null) beforePrintEvent();
Console.WriteLine("Hexadecimal: {0:X}", dec);
}
}
Dastur tahlili:
PrintHelper beforePrint hodisasini nashr qiluvchi nashriyotchi klassdir. Shuni ta’kidlash joizki, har bir chiqaruvchi metod avvalo, beforePrintEvent nolga teng emasligini tekshiradi va shundan keyin beforePrintEvent() metodini chaqiradi. beforePrintEvent bu BeforePrint delegati tipidagi obyektdir. Shu bois, hech bir klass hodisaga a’zo bo’lmasa u nolga teng bo’lishi mumkin, shuning uchun ham delegat chaqirilishdan oldin u nolga teng emasligi tekshiriladi.
Lyambda ifodalar.
Lyambda ifodalarni tushunishdan oldin anonim metodlar bilan tanishib olishingiz lozim bo’ladi. Keyingi darsimizda anonim metodlar bilan tanishtiraman va shundan keyin lyambda ifodalar bilan to’liq tanishib chiqamiz.

http://hozir.org
Download 41,5 Kb.

Do'stlaringiz bilan baham:
1   2




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