Sobes.tech
Junior

C# dilində delegatlar nədir və onlar nə üçün istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

C# dilində delegatlar metodlara tipə təhlükəsiz göstəricilərdir. Onlar metodları kapsülləyir, onları parametr kimi keçirməyə və ya dəyişən tipi kimi istifadə etməyə imkan verir.

Onlar aşağıdakı məqsədlər üçün istifadə olunur:

  • ** müşahidəçi (Observer) nümunəsinin həyata keçirilməsi:** C#-də hadisələr delegatlara əsaslanır. İstifadəçi delegatı çağırmaqla abunəçilərə bildiriş verir.
  • Geri çağırışlar (Callbacks): Bir metodu daha sonra çağıracaq funksiyaya arqument kimi keçirmək.
  • Ümumi proqramlaşdırma: ActionFunc delegatları müxtəlif imzalarla işləyən ümumi metodlar yaratmağa imkan verir.
  • Paralel və asinxron proqramlaşdırma: Digər axınlarda və ya asinxron şəkildə icra olunan metodlar tez-tez delegatlar vasitəsilə ötürülür.
  • LİNQ: LINQ operatorları aktiv şəkildə delegatlardan istifadə edir, filtrasiya, çevirmə və s. üçün şərtləri müəyyən etmək.

Delegatın elan və istifadəsinə nümunə:

// void imzalı və bir int tipli arqumentlə delegatın elan olunması
public delegate void MyDelegate(int x);

public class MyClass
{
    public void PrintNumber(int num)
    {
        Console.WriteLine($"Rəqəm: {num}");
    }

    public static void Main(string[] args)
    {
        // PrintNumber metoduna işarə edən delegat nümunəsi yaradın
        MyDelegate del = new MyDelegate(new MyClass().PrintNumber);

        // Delegat vasitəsilə metodu çağırın
        del(10);
    }
}

Action ilə nümunə (qaytarmayan void metodlar üçün):

using System;

public class OtherClass
{
    public void ExecuteAction(Action action)
    {
        action(); // Keçirilmiş delegatı icra edir
    }

    public static void Main(string[] args)
    {
        Action myAction = () => Console.WriteLine("Salam Action-dan!");
        new OtherClass().ExecuteAction(myAction);
    }
}

Func ilə nümunə (qaytarmalı metodlar üçün):

using System;

public class ThirdClass
{
    public int Calculate(Func<int, int, int> operation, int a, int b)
    {
        return operation(a, b); // Keçirilmiş əməliyyatı icra et və nəticəni qaytar
    }

    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($"Toplama nəticəsi: {result}");
    }
}