C# DERS 38: DELEGATE

using System;


    class Program
    {
    public delegate void basittemsilci();// geri dönüş tipi void olan ve parametre almayan metotların adreslerini tutar

    public static void Fonk()
    {
        Console.WriteLine("Delegate ile Çağrıldı");
    }

    static void Main()

        {

        basittemsilci bt = new basittemsilci(Fonk);
        bt();
        /*      
        Adresi tutulacak metodun imzasına uygun bir delegate tanımlanmıştır ardından main metodu içerisinde
        delegate nesnesi oluşturulmuş ve yapıcı metoduna parametre olarak metodun adı verilmiştir. bt referanı üzerinden
        Invoke metodu çağırılarak metot çağırılmış olur.
        */
        }
    }

Delegate, metodun bir çalışma zamanında hangi metodun çalışması gerektiğine karar verme durumunda kullanılabilir.
Bu durumda karar verici metot çalıştırabileceği metotları temsil eden temsilci nesnelerini parametre olarak alır.
Çalışma zamanında ilgili metotlar için temsilci nesneleri oluşur ve karar verici metoda hangi metot çalıştırılacak ise
onun temsilcisi gönderilir.