Delegate C# Tutorial

using System; 
 
delegate void MyEventHandler(); 
 
class MyEvent { 
  public event MyEventHandler SomeEvent; 
 
  public void OnSomeEvent() { 
    if(SomeEvent != null) 
      SomeEvent(); 
  } 

 
class KeyEvent { 
  int id; 
 
  public KeyEvent(int x) { 
     id = x; 
  } 
 
  public void KeyEventHandler() { 
    Console.WriteLine("Event received by object " + id); 
  } 

 
class MainClass { 
  public static void Main() {  
    MyEvent evt = new MyEvent(); 
    KeyEvent o1 = new KeyEvent(1); 
    KeyEvent o2 = new KeyEvent(2); 
    KeyEvent o3 = new KeyEvent(3); 
 
    evt.SomeEvent += o1.KeyEventHandler; 
    evt.SomeEvent += o2.KeyEventHandler; 
    evt.SomeEvent += o3.KeyEventHandler; 
 
    evt.OnSomeEvent(); 
  } 
}
Event received by object 1
Event received by object 2
Event received by object 3