using System; class EventInt{ Int32 val; public Int32 Value{ get{return val;} set{ if(Changed != null) Changed(value, val); val = value; } } public event Callback Changed; public delegate void Callback(Int32 newVal, Int32 oldVal); } class App{ public static void Main(){ EventInt num = new EventInt(); num.Changed += new EventInt.Callback(HandleChange); num.Value = 20; num.Value += 10; } static void HandleChange(Int32 newVal, Int32 oldVal){ Console.WriteLine("Changed from {0} to {1}", oldVal, newVal); } }