Sobes.tech
Junior

Ի՞նչ կարող է պարունակել C#-ի դելեգատը։

sobes.tech AI

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

C#-ում դելեգատը մի տեսակ է, որը ներկայացնում է հղումներ կոնկրետ սագրի (վերադարձվող տիպ և պարամետրերի տիպեր) ունեցող մեթոդների վրա: Այն կարող է պարունակել.

  1. Կապ ստատիկ մեթոդի վրա:
    // Ստատիկ մեթոդ
    public static void StaticMethod(int x) { }
    
    // Դելեգատ, որը հղում է անում ստատիկ մեթոդին
    MyDelegate d = StaticMethod;
    
  2. Կապ օբյեկտի մեթոդի վրա:
    // Օբյեկտի մեթոդով դաս
    public class MyClass
    {
        public void InstanceMethod(int y) { }
    }
    
    // Դասի օրինակ ստեղծել
    MyClass obj = new MyClass();
    
    // Դելեգատ, որը հղում է անում օբյեկտի մեթոդին
    MyDelegate d = obj.InstanceMethod;
    
  3. Շարք՝ մի քանի մեթոդների կանչերի ցանկ (invocation list): C#-ում դելեգատը իրականում բազմաալիքային է: Այն կարող է պարունակել մի քանի մեթոդների հղումներ: Երբ այդպիսի դելեգատը կանչվում է, կանչվում են բոլոր մեթոդները ցանկում ըստ ավելացման կարգի:
    public delegate void MyDelegate(int value);
    
    public static void Method1(int z) { }
    public static void Method2(int w) { }
    
    // Բազմաալիքային դելեգատ ստեղծել
    MyDelegate multiDelegate = Method1;
    multiDelegate += Method2; // Երկրորդ մեթոդը ավելացնել
    
    // Դելեգատը կանչելիս, կանչվում են երկու մեթոդները
    multiDelegate(10);