Delegatlar, hodisalar va lyambdalar



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


Delegatlar, hodisalar va lyambdalar

Delegatlar

Delegatlar usullarni ko‘rsatadigan ob’ektlarni taqdim etadi. Ya’ni delegatlar – usullarga ko‘rsatkichlar va delegatlar yordamida biz ushbu usullarni chaqirishimiz mumkin.
Delegatlarni aniqlash

Delegatni e’lon qilish uchun delegate kalit so‘zidan foydalaniladi, shundan so‘ng qaytariladigan turi, nomi va parametrlar yoziladi. Masalan:

delegate void Message();

Message delegatining qaytariladigan turi sifatida void (ya’ni hech narsani qaytarmaydi) turi mavjud va hech qanday parametrlarni qabul qilmaydi. Demak, ushbu delegat hech qanday parametrlarni qabul qilmaydigan hech qanday qiymat qaytarmaydigan usulni ko‘rsatishi mumkin.


Ushbu delegatning qo‘llanilishini ko‘rib chiqamiz:

class Program

{

delegate void Message(); // 1. Delegatni e’lon qilamiz


static void Main(string[] args)

{

Message mes; // 2. Delegat o‘zgaruvchisini yaratamiz



if (DateTime.Now.Hour < 12)

{

mes = GoodMorning; // 3. Ushbu o‘zgaruvchiga usul manzili beramiz



}

else


{

mes = GoodEvening;

}

mes(); // 4. Usul chaqirilmoqda



Console.ReadKey();

}

private static void GoodMorning()



{

Console.WriteLine("Good Morning");

}

private static void GoodEvening()



{

Console.WriteLine("Good Evening");

}

}

Bu erda avvalo delegatni belgilaymiz:



delegate void Message(); // 1. Delegatni e’lon qilamiz

Bu holatda delegat sinf ichida aniqlanadi, biroq delegatni nomlar maydoni ichida sinfdan tashqari ham aniqlash mumkin.


Delegatdan foydalanish uchun ushbu delegatning o‘zgaruvchisi e’lon qilinadi:

Message mes; // 2. Delegat o‘zgaruvchisini yaratamiz

DateTime.Now.Hour xususiyatdan foydalanib, joriy soatni olamiz. Vaqtga qarab delegatga aniq usul manzili beriladi. E’tibor bering, ushbu usullar delegat bilan birga qaytariladigan qiymatlarga ega bo‘ladi.

mes = GoodMorning; // 3. Ushbu o‘zgaruvchiga usul manzili beramiz

Shundan so‘ng delegat orqali ushbu delegat bog‘liq bo‘lgan usulni chaqiramiz:

mes(); // 4. Usul chaqirilmoqda

Delegatni chaqirish usul chaqirishiga ko‘ra amalga oshiriladi.
Boshqa delegatga misol ko‘rib chiqamiz:

class Program

{

delegate int Operation(int x, int y);


static void Main(string[] args)

{

//usul manzilini kontruktor orqali belgilash



Operation del = Add ;//delegat Add usulini ko‘rsatadi

int result = del (4,5) ;//amalda Add (4, 5)

Console.WriteLine(result);
del = Multiply ;//endi delegat Multiply usulini ko‘rsatadi

result = del (4, 5) ;//amalda Multiply (4, 5)

Console.WriteLine(result);
Console.Read();

}

private static int Add(int x, int y)



{

return x+y;

}

private static int Multiply (int x, int y)



{

return x * y;

}

}

Bunda Operation delegati int turidagi qiymatni qaytaradi va ikkita int parametriga ega. Shuning uchun ushbu delegatga int turini qaytaradigan va int turidagi ikkita parametrlarni qabul qiladigan har qanday usul mos keladi. Bu holatda bu Add va Multiply usullari. Ya’ni biz ushbu usullarning har birini delegat o‘zgaruvchisiga o‘rnatib, chaqirishimiz mumkin.


Delegat int turidagi ikkita parametrlarni qabul qilayotgani uchun, u chaqirilganda ushbu parametrlar uchun int turidagi qiymatlarni uzatish kerak: del (4,5).

Delegatlar faqat delegat o‘zgaruvchisi shu sinfda belgilangan usullarni ko‘rsatishi shart emas. Bu boshqa sinf va strukturalar usullari ham bo‘lishi mumkin.

class Math

{

    public int Sum(int x, int y) { return x + y; }



}

class Program

{

    delegate int Operation(int x, int y);



 

    static void Main(string[] args)

    {

        Math math = new Math();



        Operation del = math.Sum;

        int result = del(4, 5);     // math.Sum(4, 5)

        Console.WriteLine(result);  // 9

 

        Console.Read();



    }

}


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