Delegate C# Tutorial

using System;
public delegate int IncrementDelegate(ref short refCount);
public class Factorial {
    public static void Main() {
        IncrementDelegate[] values = { Incrementer, Incrementer,Incrementer, Incrementer, Incrementer};
        IncrementDelegate del = (IncrementDelegate)
        IncrementDelegate.Combine(values);
        long result = 1;
        short count = 1;
        foreach (IncrementDelegate number in del.GetInvocationList()) {
            result = result * number(ref count);
        }
        Console.WriteLine("{0} factorial is {1}", del.GetInvocationList().Length, result);
    }
    public static int Incrementer(ref short refCount) {
        return refCount++;
    }
}