Sobes.tech
Junior

Ի՞նչ է դելեգատը C#-ում։

sobes.tech AI

Պատասխան AI-ից

Դելեգատը հղումային տիպ է, որը հայտարարում է delegate բանալի բառով: Այն ինկապսուլացնում է մեթոդը որոշակի սիգնատուրայով (վերադարձվող տիպը և պարամետրերի տիպերը): Իրականում, դելեգատը տիպային անվտանգ ցուցիչ է մեթոդի վրա:

Դելեգատների հիմնական հատկությունները:

  • Մեթոդների ինկապսուլացում: Դելեգատը պահում է տեղեկություններ այն մեթոդի մասին, որի վրա նա հղում է:
  • Տիպային անվտանգություն: Դելեգատը կարող է հղում կատարել միայն այն մեթոդներին, որոնց սիգնատուրան խիստ համապատասխանում է դելեգատի սիգնատուրային:
  • Մուլտիկասթ (Multicast): Դելեգատները կարող են միաժամանակ հղում կատարել մի քանի մեթոդների: Դելեգատի կանչի ժամանակ, բոլոր կապված մեթոդները կանչվում են ըստ նրանց ավելացման կարգի:

Օրինակ հայտարարում և օգտագործում:

// Դելեգատի հայտարարում
public delegate int MyDelegate(int x, int y);

// Մեթոդ, որը համապատասխանում է դելեգատի սիգնատուրային
public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }
}

// Դելեգատի օգտագործում
public class Program
{
    public static void Main(string[] args)
    {
        Calculator calc = new Calculator();

        // Դելեգատի օրինակ ստեղծում և կապում Add մեթոդի հետ
        MyDelegate del = new MyDelegate(calc.Add);

        // Մեթոդի կանչում դելեգատի միջոցով
        int result = del(5, 3);
        System.Console.WriteLine(result); // Արտածում՝ 8
    }
}

.NET Framework 3.5 և LINQ-ի հայտնվելու հետ, լայնորեն տարածվեցին բեռնված գեներիկ դելեգատները՝

  • Action<T1, ..., Tn>: Դելեգատ, որը չի վերադարձնում արժեք (void): կարող է ընդունել 0-ից 16 տարբեր տիպերի պարամետրեր:
  • Func<T1, ..., Tn, TResult>: Դելեգատ, որը վերադարձնում է TResult տիպի արժեք: կարող է ընդունել 0-ից 16 տարբեր տիպերի պարամետրեր:
  • Predicate<T>: Դելեգատ, որը ընդունում է T տիպի մեկ պարամետր և վերադարձնում է բուլյան արժեք: օգտագործվում է պայմանների ստուգման համար:

Տեղական դելեգատների համեմատական աղյուսակը:

Դելեգատ Վերադարձվող արժեք Պարամետրեր Օրինակ օգտագործում
Action void 0..16 պարամետրեր Գործողության կատարմամբ առանց վերադարձի արժեքի
Func<TResult> TResult 0 պարամետր + վերադարձ TResult Հաշվարկ առանց մուտքային տվյալների
Func<T, TResult> TResult 1 պարամետր T տիպի + վերադարձ TResult Տվյալների փոխակերպում
Predicate<T> bool 1 պարամետր T տիպի Պայմանների ստուգում

Դելեգատները լայնորեն օգտագործվում են իրադարձությունների մշակման, ասինխրոն գործառույթների, LINQ-ի և բլեքբեքների իրականացման համար։