C# delegate

C#
    using System;

	public class CargoAircraft
    {
      	// Create a delegate type (no return no arguments)
        public delegate void CheckQuantity();
		// Create an instance of the delegate type
        public CheckQuantity ProcessQuantity;

        public void ProcessRequirements()
        {
          // Call the instance delegate
          // Will invoke all methods mapped
            ProcessQuantity();
        }
    }

    public class CargoCounter
    {
        public void CountQuantity() { }
    }

    class Program
    {
        static void Main(string[] args)
        {
            CargoAircraft cargo = new CargoAircraft();
            CargoCounter cargoCounter = new CargoCounter();
			
          	// Map a method to the created delegate
            cargo.ProcessQuantity += cargoCounter.CountQuantity;
          	
          	// Will call instance delegate invoking mapped methods
            cargo.ProcessRequirements();
        }
    }
}
Source

Also in C#: