Delegate C# Tutorial

using System;
public delegate void AgeChangeHandler(int age, object obj,
        ref bool dontdoit);
class Employee {
    public event AgeChangeHandler AgeChange;
    int fAge;
    public int Age {
        set {
            Boolean dontdoit = false;
            AgeChange(value, this, ref dontdoit);
            if (!dontdoit)
                fAge = value;
        }
        get {
            return fAge;
        }
    }
    public Employee() {
        fAge = 0;
    }
}
class MainClass {
    private static void MyAgeChangeHandler(int age, object obj,
          ref bool dontdoit) {
        Console.WriteLine(
           "MyAgeChangeHandler called with age {0} obj.age = {1}",
              age, ((Employee)obj).Age);
        if (age < 0 || age > 99)
            dontdoit = true;
    }
    public static void Main() {
        Employee p = new Employee();
        // Set up our handler
        p.AgeChange += new AgeChangeHandler(MyAgeChangeHandler);
        p.Age = 21;
        p.Age = 33;
    }
}