Delegat Delegat bu metod imzosini belgilaydigan ma'lumot turi. Siz boshqa ma'lumotlar turi kabi delegatning o'zgaruvchilarini yaratishingiz mumkin va ular yordamida delegat bilan bir XIL parametrga EGA har qanday metodga murojaat qilishingiz



Download 253,81 Kb.
bet1/4
Sana01.01.2022
Hajmi253,81 Kb.
#282953
  1   2   3   4
Bog'liq
Delegatlar


Delegatlar


Agar funksiyani parametr sifatida uzatishni xohlasak nima bo'ladi? Qanday qilib C# callback funksiyalari yoki eventlarni boshqaradi?

Javob: Delegat



Delegat - bu metod imzosini belgilaydigan ma'lumot turi. Siz boshqa ma'lumotlar turi kabi delegatning o'zgaruvchilarini yaratishingiz mumkin va ular yordamida delegat bilan bir xil parametrga ega har qanday metodga murojaat qilishingiz mumkin.

Delegatlar bilan ishlashda uchta bosqich mavjud:



  1. Delegatni e'lon qilish

  2. Kerakli metodni o'rnatish

  3. Delegatni chaqirish

Delegat quyida ko'rsatilgandek , delegate kalit so'zdan keyin funksiya imzosi yordamida e'lon qilinishi mumkin:

[ruxsat modifikatori] delegate [qaytariluvchi tip] [delegat nomi]([parameterlar])

Quyida MyDelegate deb nomlangan delegat e'lon qilingan:

public delegate void MyDelegate(string msg);

Yuqorida biz void tipidagi va string parametrli MyDelegate delegatini e'lon qildik. Delegat sinfdan tashqarida yoki sinf ichida e'lon qilinishi mumkin. Quyidagi misolda sinfdan tashqarida e'lon qilamiz.

using System;

namespace Delegate

{

class Program



{

// delegat e'lon qilish

public delegate void MyDelegate(string msg);
public static void Main(string[] args)

{

// delegat obyektiga metod tayinlash



MyDelegate del1 = new MyDelegate(MethodA);
// delegat obyektiga metod tayinlash

MyDelegate del2 = MethodA;


//lambda ifodadan foydalanish

MyDelegate del3 = (string msg) => Console.WriteLine(msg);


Console.ReadKey();

}
//metodni e'lon qilish

static void MethodA(string message)

{

Console.WriteLine(message);



}

}

}



Kerakli metodni o'rnatgandan so'ng, Invoke() metodi yordamida yoki () operator yordamida delegat chaqirilishi mumkin.

del.Invoke("Hello World!");

// or

del("Hello World!");

Quyida delegat qo'llanishining to'liq namunasi keltirilgan:

using System;

namespace Delegate

{

public delegate void MyDelegate(string msg);


class Program

{

static void Main(string[] args)



{

MyDelegate del = ClassA.MethodA;

del("Hello World");

del = ClassB.MethodB;

del("Hello World");

del = (string msg) => Console.WriteLine("lambda ifoda ishlatilishi: " + msg); del("Hello World");


Console.ReadKey();

}

}



class ClassA

{

public static void MethodA(string message)



{

Console.WriteLine("ClassA.MethodA() metodi chaqirildi: " + message);

}

}

class ClassB



{

public static void MethodB(string message)

{

Console.WriteLine("ClassB.MethodB() metodi chaqirildi: " + message);



}

}

}




Download 253,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