Sobes.tech
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>: TResult tipində 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>: T tipində 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.