How to: Combine Delegates (Multicast Delegates)(C# Programming Guide)

This example demonstrates how to compose multicast delegates. A useful property of delegate objects is that they can be assigned to one delegate instance to be multicast using the + operator. A composed delegate calls the two delegates it was composed from. Only delegates of the same type can be composed.

The - operator can be used to remove a component delegate from a composed delegate.


delegate void Del(string s);

class TestClass
    static void Hello(string s)
        System.Console.WriteLine("  Hello, {0}!", s);

    static void Goodbye(string s)
        System.Console.WriteLine("  Goodbye, {0}!", s);

    static void Main()
        Del a, b, c, d;

        // Create the delegate object a that references  
        // the method Hello:
        a = Hello;

        // Create the delegate object b that references  
        // the method Goodbye:
        b = Goodbye;

        // The two delegates, a and b, are composed to form c: 
        c = a + b;

        // Remove a from the composed delegate, leaving d,  
        // which calls only the method Goodbye:
        d = c - a;

        System.Console.WriteLine("Invoking delegate a:");
        System.Console.WriteLine("Invoking delegate b:");
        System.Console.WriteLine("Invoking delegate c:");
        System.Console.WriteLine("Invoking delegate d:");
/* Output:
Invoking delegate a:
  Hello, A!
Invoking delegate b:
  Goodbye, B!
Invoking delegate c:
  Hello, C!
  Goodbye, C!
Invoking delegate d:
  Goodbye, D!

See Also


C# Programming Guide


Events (C# Programming Guide)