Gewusst wie: Kombinieren von Delegaten (Multicastdelegaten) (C#-Programmierhandbuch)How to: Combine Delegates (Multicast Delegates)(C# Programming Guide)

Das folgende Beispiel veranschaulicht das Erstellen von Multicastdelegaten.This example demonstrates how to create multicast delegates. Eine nützliche Eigenschaft von delegate-Objekten besteht darin, dass einer Delegatinstanz mithilfe des Operators + mehrere Objekte zugewiesen werden können.A useful property of delegate objects is that multiple objects can be assigned to one delegate instance by using the + operator. Der Multicastdelegat enthält eine Liste der zugewiesenen Delegaten.The multicast delegate contains a list of the assigned delegates. Wenn der Multicastdelegat aufgerufen wird, ruft er die Delegaten in der Liste nacheinander auf.When the multicast delegate is called, it invokes the delegates in the list, in order. Es können nur Delegaten desselben Typs kombiniert werden.Only delegates of the same type can be combined.

Mithilfe des Operators - kann ein Komponentendelegat aus einem Multicastdelegaten entfernt werden.The - operator can be used to remove a component delegate from a multicast delegate.

BeispielExample

using System;

// Define a custom delegate that has a string parameter and returns void.
delegate void CustomDel(string s);

class TestClass
{
    // Define two methods that have the same signature as CustomDel.
    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()
    {
        // Declare instances of the custom delegate.
        CustomDel hiDel, byeDel, multiDel, multiMinusHiDel;

        // In this example, you can omit the custom delegate if you 
        // want to and use Action<string> instead.
        //Action<string> hiDel, byeDel, multiDel, multiMinusHiDel;

        // Create the delegate object hiDel that references the
        // method Hello.
        hiDel = Hello;

        // Create the delegate object byeDel that references the
        // method Goodbye.
        byeDel = Goodbye;

        // The two delegates, hiDel and byeDel, are combined to 
        // form multiDel. 
        multiDel = hiDel + byeDel;

        // Remove hiDel from the multicast delegate, leaving byeDel,
        // which calls only the method Goodbye.
        multiMinusHiDel = multiDel - hiDel;

        Console.WriteLine("Invoking delegate hiDel:");
        hiDel("A");
        Console.WriteLine("Invoking delegate byeDel:");
        byeDel("B");
        Console.WriteLine("Invoking delegate multiDel:");
        multiDel("C");
        Console.WriteLine("Invoking delegate multiMinusHiDel:");
        multiMinusHiDel("D");
    }
}
/* Output:
Invoking delegate hiDel:
  Hello, A!
Invoking delegate byeDel:
  Goodbye, B!
Invoking delegate multiDel:
  Hello, C!
  Goodbye, C!
Invoking delegate multiMinusHiDel:
  Goodbye, D!
*/

Siehe auchSee Also

MulticastDelegate
C#-ProgrammierhandbuchC# Programming Guide
EreignisseEvents