public static void Main()
var person = new Person();
person.name = "Joe Smith";
var alarm = new AlarmClock();
alarm.AlarmClockEvent += person.HandleAlarm;
public string name { get; set; }
public void HandleAlarm(object sender, AlarmClockEventArgs e)
Console.WriteLine("Get out of bed it's {0}", e.time);
public event AlarmClockEventHandeler AlarmClockEvent;
Console.WriteLine("Alarm went off!");
if (AlarmClockEvent != null)
AlarmClockEvent(this, new AlarmClockEventArgs(DateTime.Now));
public delegate void AlarmClockEventHandeler(object source, AlarmClockEventArgs e);
public class AlarmClockEventArgs : EventArgs
public DateTime time {get;set;}
public AlarmClockEventArgs (DateTime time)