Junior
C# da delegatlar nima va ular nima uchun ishlatiladi?
sobes.tech AI
AIdan javob
C# dasturlash tilida delegatlar — bu metodlarga xavfsiz turdagi ko‘rsatkichlardir. Ular metodni inkapsulyatsiya qiladi, uni parametr sifatida o'tkazishga yoki o'zgaruvchi turida ishlatishga imkon beradi.
Ular quyidagi maqsadlar uchun ishlatiladi:
- Observer ( kuzatuvchi) shablonini amalga oshirish: C# da voqealar delegatlarga asoslangan. Yuboruvchi obunachilarga delegatni chaqirish orqali xabar beradi.
- Callbacklar: Bir metodni keyinchalik chaqiriladigan funksiyaga argument sifatida o'tkazish.
- Generic dasturlash:
ActionvaFuncdelegatlari turli imzolar bilan ishlaydigan umumiy metodlarni yaratishga imkon beradi. - Parallel va asinxron dasturlash: Boshqa oqimlarda yoki asinxron tarzda bajariladigan metodlar ko'pincha delegatlar orqali o'tkaziladi.
- LİNQ: LINQ operatorlari aktiv ravishda delegatlardan foydalanadi, filtrlash, transformatsiya qilish va boshqalar uchun shartlarni belgilashda.
Delegatni e'lon qilish va foydalanish misoli:
// void imzosi va bitta int turidagi argument bilan delegat e'lon qilish
public delegate void MyDelegate(int x);
public class MyClass
{
public void PrintNumber(int num)
{
Console.WriteLine($"Raqam: {num}");
}
public static void Main(string[] args)
{
// PrintNumber metodiga ishora qiluvchi delegat nusxasini yaratish
MyDelegate del = new MyDelegate(new MyClass().PrintNumber);
// Delegat yordamida metodni chaqirish
del(10);
}
}
Action bilan misol (qaytarmasiz void metodlar uchun):
using System;
public class OtherClass
{
public void ExecuteAction(Action action)
{
action(); // O'tkazilgan delegatni bajarish
}
public static void Main(string[] args)
{
Action myAction = () => Console.WriteLine("Action dan salom!");
new OtherClass().ExecuteAction(myAction);
}
}
Func bilan misol (qaytarmali metodlar uchun):
using System;
public class ThirdClass
{
public int Calculate(Func<int, int, int> operation, int a, int b)
{
return operation(a, b); // O'tkazilgan operatsiyani bajarish va natijani qaytarish
}
public static void Main(string[] args)
{
Func<int, int, int> add = (x, y) => x + y;
int result = new ThirdClass().Calculate(add, 5, 3);
Console.WriteLine($"Qo'shish natijasi: {result}");
}
}