-

C#’DA DELEGATE(TEMSİLCİ)

Delegate Nedir?

C#’da  kullanılabilen ve bir .Net kavramı olan delegate’in kelime anlamı temsilcidir,temsil ettikleri kavram da metodlardır(fonksiyon). Delegateler metodların başlangıç adreslerini refere(işaret) ederler.C#daki delegate C++’daki  Function Pointera(fonksiyon işaretçileri) benzer görev yapar.Bundan farklı olarak sadece beklediği türden referans verilebilir.Delegate atama işlemi yapıldıktan sonra  metod yerine kullanabiliriz.

Delagete Nasıl Tanımlanır,Nasıl Kullanılır?

Delegate tanımlanırken geri  dönüş tipi ve aldığı parametre temsil edeceği  metoda göre belirlenir.Metodada kullanılırken tanımlanan geri dönüş tipi ve aldığı parametreye göre işlem yapar.

<erişim belirleyici> delegate <geri dönüş tipi> <temsilci ismi>(<varsa parametreler>) formatında tanımlanır.

class Program

{

delegate int MyDelegate(int a,int b);//şeklinde tanımlanır

static void Main(string[] args)

{

MyDelegate del = new MyDelegate(metodAdd);//şeklide kullanılır

Console.WriteLine(“addition:”+del.Invoke(1,2));

Console.ReadLine();

}

public static int metodAdd(int a,int b)

{

return a+b;

}

Çıktı:

addtion

Farklı şekillerde de kullanılabilir:

  • New yazmadan;

MyDelegate del = metodAdd;//şeklide kullanılır

Console.WriteLine(del.Invoke(1,2));

  • Invoke kullanmadan;

MyDelegate del = new MyDelegate(metodAdd);//şeklide kullanılır

string sonuc = metodAdd(1, 2);

Delegatelerde metod ekleme çıkarma işlemleri yapılabilir.

class Program

{

delegate string MyDelegate(int a, int b);//şeklinde tanımlanır

static void Main(string[] args)

{

MyDelegate del = new MyDelegate(metodAdd);//şeklide kullanılır

del += new MyDelegate(metodSub);

Console.WriteLine(del.Invoke(1,2));

Console.ReadLine();

}

public static string metodAdd(int a,int b)

{

return “Addition:”+(a+b).ToString();

}

public static string metodSub(int a, int b)

{

return “Subtraction:”+(a- b).ToString();

}

Çıktı:

subt

Başka bir metod eklendiği zaman ise FIFO mantığında metodlar sıra ile çalışmış olur.Yukarıdaki örnekte once toplama işlemini yapar sonra çıkarma işlemini yaparak ekrana çıkarma işlemini sonucunu yazdırmış olur.

Aynı şekilde;

del -= new MyDelegate(metodSub);

yazılırsa metodan çıkarılır ve onun işlemi yapılmaz.

Delegate Nasıl Fayda Sağlar?

  •     Runtime de hangi metodların kullanılacağına karar vermek,
  •     Bellek yönetimi açısından fayda sağlamak,
  •    Gereksiz yere kod yazılmasının önüne geçmek,
  •    Event kullanıldığında eventin yakalanacağı metodu belirlemek.

 

DERYA GÜNDÜZ

 

 

Category: C#

Your email address will not be published. Required fields are marked *

*