Sobes.tech
Junior

C#'ta bir delege ne içerebilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

C# dilinde delegat, belirli bir imzaya (dönüş tipi ve parametre tipleri) sahip yöntemlere referansları temsil eden bir türdür. İçerebilir:

  1. Statik metoda referans:
    // Statik yöntem
    public static void StaticMethod(int x) { }
    
    // Statik metoda referans eden delegat
    MyDelegate d = StaticMethod;
    
  2. Örnek metoda referans:
    // Örnek metod içeren sınıf
    public class MyClass
    {
        public void InstanceMethod(int y) { }
    }
    
    // Sınıf örneği oluşturma
    MyClass obj = new MyClass();
    
    // Örnek metoda referans eden delegat
    MyDelegate d = obj.InstanceMethod;
    
  3. Çağrı listesi (invocation list) içeren birden fazla metod: C#'ta delegat aslında çok adresli (multicast) bir yapıdır. Birden fazla metoda referans içerebilir. Bu delegat çağrıldığında, listedeki tüm metodlar çağrılır ve eklenme sırasına göre çalıştırılır.
    public delegate void MyDelegate(int value);
    
    public static void Method1(int z) { }
    public static void Method2(int w) { }
    
    // Çok adresli delegat oluşturma
    MyDelegate multiDelegate = Method1;
    multiDelegate += Method2; // İkinci metodu ekleme
    
    // Delegat çağrıldığında, her iki metod da çağrılır
    multiDelegate(10);