c# KODLARI 

  •  

    C# DELEGATE ( Temsilci -Delege ) KULLANIMI

Delegate Tanımlama, Örnekleme, Çağırma

Delegate kullanımı 3 aşamada yapılır.
1. Tanımlama - Declare
2. Örneklenme - Instance
3. Çağırma - Invoke
Delegate ler başka fonksiyonlara aracılık eden özel fonksiyonlardır.Aşağıdaki örneğimizde ilk önce bir delegenin nasıl tanımlandığını, instance oluşturulmasını ve çağrılmasını görelim.

class DelegeOrnek1
{
     //Delegate Tanımlama ( Class dışında namespace altında da tanımlanabilir.
     public delegate void MyDelegate(int Sayi1, int Sayi2);
    
     static int Carp(int sayi1, int sayi2)
     {
         return sayi1 * Sayi2;
     }      static void Main()
     {
         //Delagate' in instance' ını oluşturalım.
         MyDelegate delege = new MyDelegate(Carp);
         Console.ReadLine();
        
         //Deleagate Çağıralım ( invoke)
         int iCarpim = delege(3, 4); //Invocation
         Console.WriteLine("Çarpım Sonucu :{0}", iCarpim);
     }
    
 }
//Çıktı Çarpım Sonucu : 12

Delegate üzerinden fonksiyonları çağırdığımız zaman delaget ’in Invoke() metodunu çağırmış oluruz.
Yani “delege(3,4)” ifadesi, “delege.Invoke(3,4)” metodunu çalıştırır.

 

Delegate üzerine metod ekleme çıkartma

Aşağıdaki örneğimizde bir delege' ye birden fazla metod ekleyelim ve daha sonra bazı metodları çıkartalım.

class DelegeOrnek2
{
     public delegate void MyDelegate(int Sayi1, int Sayi2);
     public DelegeOrnek2()
     {
         //Constructor -> delegeye yeni metotlar ekliyoruz
         MyDelegate delege = null;
         delege += new MyDelegate(Topla);
         delege += new MyDelegate(Carp);
         delege += new MyDelegate(Bol);
        
         int a = 24;
         int b = 6;
         delege(a, b);
        
         //Delegeden bazı metotları çıkartıyoruz ve sadece Bölme metodu kalıyor.
         delege -= new MyDelegate(Topla);
         delege -= new MyDelegate(Carp);
        
         //Aşağıdaki list ile Delegenin üzerindeki metotları görebiliriz.
         Delegate[] DelegeMetodListesi =delege.GetInvocationList();
     }
    
    
     //Toplama fonksiyonu
     void Topla(int num1, int num2)
     {
         Console.WriteLine("Toplam : {0} + {1} = {2}", num1, num2, num1 + num2);
     }
    
     //Çarpma fonksiyonu
     void Carp(int num1, int num2)
     {
         Console.WriteLine("Çarpım : {0} * {1} = {2}", num1, num2, num1 * num2);
     }
    
     //Bölme fonksiyonu
     void Bol(int num1, int num2)
     {
         Console.WriteLine("Bölüm : {0} / {1} = {2}", num1, num2, num1 / num2);
     }
    
     static void Main()
     {
         new DelegeOrnek2();
         Console.ReadLine();
     }
    
 }
//Çıktı
//Toplam : 24 + 6 = 30
//Çarpım : 24 * 6 = 144
//Bölüm  : 24 / 6 = 4