Junior
C#-də delege nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Delegat — bu delegate açar sözü ilə elan olunan istinad növüdür. O, müəyyən bir imzaya (qaytış tipi və parametr tipləri) malik metodları inkapsulyasiya edir. Əsasən, delegat metodlara təhlükəsiz göstəricidir.
Delegatların əsas xüsusiyyətləri:
- Metodların inkapsulyasiyası: Delegat, ona istinad etdiyi metod haqqında məlumat saxlayır.
- Tip təhlükəsizliyi: Delegat yalnız imzası tam uyğun olan metodlara istinad edə bilər.
- Çoxsaylı (Multicast): Delegatlar eyni zamanda bir neçə metoda istinad edə bilər. Delegat çağırıldıqda, ona bağlı bütün metodlar əlavə olunduğu ardıcıllıqla çağırılır.
İlan və istifadə nümunəsi:
// Delegatın elan olunması
public delegate int MyDelegate(int x, int y);
// Delegat imzasına uyğun metod
public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
}
// Delegatdan istifadə
public class Program
{
public static void Main(string[] args)
{
Calculator calc = new Calculator();
// Delegat nümunəsinin yaradılması və Add metoduna bağlanması
MyDelegate del = new MyDelegate(calc.Add);
// Delegat vasitəsilə metodun çağırılması
int result = del(5, 3);
System.Console.WriteLine(result); // Çıxış: 8
}
}
.NET Framework 3.5 və LINQ ilə birlikdə, daxili ümumi delegatlar geniş yayılmışdır:
Action<T1, ..., Tn>: Dəyər qaytarmayan (void) delegat. 0-dan 16-ya qədər müxtəlif tiplərdə parametr qəbul edə bilər.Func<T1, ..., Tn, TResult>:TResulttipində dəyər qaytaran delegat. 0-dan 16-ya qədər müxtəlif tiplərdə parametr qəbul edə bilər.Predicate<T>:Ttipində parametr qəbul edən və boolean dəyər qaytaran delegat. Şərtlərin yoxlanması üçün istifadə olunur.
İnteqrasiya olunmuş delegatların müqayisə cədvəli:
| Delegat | Qaytış dəyəri | Parametrlər | İstifadə nümunəsi |
|---|---|---|---|
Action |
void |
0..16 parametr | Qaytarmayan əməliyyatın yerinə yetirilməsi |
Func<TResult> |
TResult |
0 parametr + TResult qaytış dəyəri |
Giriş olmadan hesablamalar |
Func<T, TResult> |
TResult |
1 parametr T + TResult qaytış dəyəri |
Dəyərin çevrilməsi |
Predicate<T> |
bool |
1 parametr T |
Şərtin yoxlanması |
Delegatlar geniş istifadə olunur hadisələrin idarə olunmasında, asinxron əməliyyatlarda, LINQ və geri çağırışlar (callback) üçün.