uses the invocation list to calculate a factorial : delegate « delegate « C# / CSharp 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++;
    }

}








9.1.delegate
9.1.1.Define a delegate with no return value and no parameters
9.1.2.Add both static and non-static function to a delegate
9.1.3.Delegate with reference paramemters
9.1.4.Delegate with return values
9.1.5.Use a delegate to call object methods
9.1.6.delegate is a function pointer
9.1.7.A simple delegate example.
9.1.8.Construct a delegate using method group conversion
9.1.9.Delegates can refer to instance methods
9.1.10.Delegates to Instance Members
9.1.11.uses the invocation list to calculate a factorial
9.1.12.named-delegate invocation
9.1.13.Use delegate to reference two static functions
9.1.14.Declare a delegate and assigns a reference to either the WriteLine method or the ShowWindowsMessage method to its delegate instance.