using System; namespace delegates { class Program { static void Main(string[] args) { MyClass myClass = new MyClass(); MyDelegate myDelegate = new MyDelegate(myClass.MyMethod); myDelegate("A string.."); MyDelegate anotherDelegate = new MyDelegate(myClass.AnotherMethod); myDelegate = myDelegate + anotherDelegate; myDelegate("Another string.."); myClass.ThirdMethod(myDelegate); myClass.MyEvent += new MyDelegate(myClass.MyMethod); myClass.MyEvent += delegate(string text) { Console.WriteLine(text.ToLower()); }; myClass.MyEvent += new MyDelegate(myClass_MyEvent); myClass.RaiseEvent("Raising Event"); } static void myClass_MyEvent(string text) { Console.WriteLine(string.Concat("EventHandler: " ,text)); } } delegate void MyDelegate(string text); class MyClass { public event MyDelegate MyEvent; public void MyMethod(string text) { Console.WriteLine(text); } public void AnotherMethod(string text) { Console.WriteLine(text.ToUpper()); } public void ThirdMethod(MyDelegate delegatePassed) { delegatePassed("A passed delegate.."); } public void RaiseEvent(string text) { MyEvent(text); } } }