C# Delegate

C# da bulunan delegate yapısına geçiş yapabiliriz. C# da delegateler aslında birer nesnedir ve Delegate adındaki br sınıfdan türetilirler. Delegate tanımı yapılırken, delegate anahtar sözcüğü ile derleyiciye ifadenin bir delegate olduğu bildirilir.

public delegate void MyDelegate(int x, int y);
class Program
{
    static void Main(string[] args)
    {
        MyDelegate del = MyMethod1;
        del(4, 5);
        del = MyMethod2;
        del(4, 5);
    }
    public static void MyMethod1(int a, int b)
    {
        Console.WriteLine("MyMethod1, a + b : " +( a + b));
    }
    public static void MyMethod2(int x, int y)
    {
        Console.WriteLine("MyMethod2, x + y : " +( x + y + 5));
    }
}

Görüldüğü gibi oluşturduğumuz MyMethod adındaki delegate yapısına, aynı imzaya sahip MyMethod1 ve MyMethod2 methodlarını atadık ve tek bir delegate üzerinden bu iki methoduda çalıştırabildik.
Şimdi işin biraz daha ötesine bakıp methodları başka methodlara parametre olarak geçirmeye çalışalım.

static void Main(string[] args)
{
    MyDelegate del = MyMethod2;
    MyMethod3(7, 8, del);
}
public static void MyMethod1(int a, int b)
{
    Console.WriteLine("MyMethod1, a + b : " +( a + b));
}
public static void MyMethod2(int x, int y)
{
    Console.WriteLine("MyMethod2, x + y : " + (x + y + 7));
}
public static void MyMethod3(int x, int y, MyDelegate del)
{
    del(x, y);
}

Görüldüğü gibi bir methodu başka bir methoda parametre olarak geçirip, o methodun içinde parametre olarak geçirilmiş methodu çağırdık.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s