Void olan ve parametre almayan metotları iletmek için kullanılacak delege tanımlaması:
Bir senaryo çerçevesinde tasvir edelim;
Osmanlı, İngiliz Kralına sadece mesaj iletip mesaj alacak bir elçi yollamak istediğinde
Delegate HQ adlı merkezden
public delegate void DelegateHQ();Bir elçi tayin edilir.
DelegateHQ ottomanDelegate;
Bu elçiye iki adet görev verilir.(+=)ottomanDelegate = ottomanSultan.SendMessage; ottomanDelegate += ottomanSultan.GetFeedBack;Elçi kralın huzurunda bu görevleri yerine getirir.
ottomanDelegate();Eğer yolda bir değişiklik olursa ör. Mesajı göndermekten vazgeçilirse bu görev iptal edilir.( - = )
ottomanDelegate -= ottomanSultan.SendMessage;Void olan ve parametre alan metotları iletmek için kullanılacak delege tanımlaması:
public delegate void DelegateHQ2(string text);
DelegateHQ2 ottomanDelegateWithFerman; ottomanDelegateWithFerman = ottomanSultan.SendFerman; ottomanDelegateWithFerman("ferman içeriği");Değer dönen ve parametre alan metotları iletmek için kullanılacak delege tanımlaması:
public delegate int DelegateHQ3(int number1, int number2);
DelegateHQ3 ottomanDelegateWithNum; ottomanDelegateWithNum = ottomanSultan.ReceiveGold; ottomanDelegateWithNum(2, 4);
Tüm kodlama:
namespace Delegates { class Program { public delegate void DelegateHQ(); public delegate void DelegateHQ2(string text); public delegate int DelegateHQ3(int number1, int number2); static void Main(string[] args) { OttomanSultan ottomanSultan = new OttomanSultan(); DelegateHQ ottomanDelegate; ottomanDelegate = ottomanSultan.SendMessage; ottomanDelegate += ottomanSultan.GetFeedBack; ottomanDelegate -= ottomanSultan.SendMessage; ottomanDelegate(); DelegateHQ2 ottomanDelegateWithFerman; ottomanDelegateWithFerman = ottomanSultan.SendFerman; ottomanDelegateWithFerman("ferman içeriği"); DelegateHQ3 ottomanDelegateWithNum; ottomanDelegateWithNum = ottomanSultan.ReceiveGold; ottomanDelegateWithNum(2, 4); Console.ReadLine(); } public class OttomanSultan { public void SendMessage() { Console.WriteLine("Message received by England King!"); } public void GetFeedBack() { Console.WriteLine("Feed Back taken by ottomanDelegate!"); } public void SendFerman( string ferman) { Console.WriteLine("{0} received by England King!",ferman); } public int ReceiveGold(int num1, int num2) { Console.WriteLine("{0} gold taken ", num1+num2); return num1 + num2; } } } }