Orsatuvchi obyekt yaratiladi. Metod ushbu murojaat(sillka) orqali chaqiriladi.
Quyida delegatlarning umumiy yozilish shakli ketirilgan:
delegate qaytaruvchi_tip nom(parametrlar_ro delegate muraojat qilayotgan metoddan qaytgan tip qiymati, nom yxati sh joylarni defislarga almashtiring. Sosh joylarni olib tashlang. Keyin satrni teskarisiga chiqaring.
using System; // Delegat tipini esh joylarni defislarga almashtirish
static string ReplaceSpaces(string s) { Console.WriteLine("Bosh joylarni osh joylarni oBu oddiy test."); Console.WriteLine(Satr: " + str); Console.WriteLine(); strOp = new StrMod(Reverse); str = strOp(" Bu oddiy test."); Console.WriteLine(tiboringizni Main metodidagi balishi lozim. Bu yerda, StrMod delegatimiz oBu oddiy test.");
Bu kod yordamida esa, 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 boladilar va tadbirda qatnashadilar.
C # dagi voqealar shunga o'xshash kontseptsiyaga amal qiladi. Hodisada noshir, obunachi, xabar va hodisani ozi bilan ezgaruvchilar quyidagi tarzda ezidan foydalangan holda hodisa bozosiga xabar bersin.
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 tazo bolishi mumkin, shuning uchun ham delegat chaqirilishdan oldin u nolga teng emasligi tekshiriladi.
Lyambda ifodalar.
Lyambda ifodalarni tushunishdan oldin anonim metodlar bilan tanishib olishingiz lozim boliq tanishib chiqamiz.