How to: Combine Delegates (Multicast Delegates)
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

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:");


Invoking delegate a:
  Hello, A!
Invoking delegate b:
  Goodbye, B!
Invoking delegate c:
  Hello, C!
  Goodbye, C!
Invoking delegate d:
  Goodbye, D!

See Also

© 2015 Microsoft