Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här exemplet visar hur du skapar multicast-ombud. En användbar egenskap för ombudsobjekt är att flera objekt kan tilldelas till en ombudsinstans med hjälp av operatorn + . Multicast-ombudet innehåller en lista över de tilldelade ombuden. När multicast-ombudet anropas anropas ombuden i listan i ordning. Endast ombud av samma typ kan kombineras.
Operatorn - kan användas för att ta bort ett komponentdelegat från ett multicast-ombud.
Exempel
using System;
// Define a custom delegate that has a string parameter and returns void.
delegate void CustomCallback(string s);
class TestClass
{
    // Define two methods that have the same signature as CustomCallback.
    static void Hello(string s)
    {
        Console.WriteLine($"  Hello, {s}!");
    }
    static void Goodbye(string s)
    {
        Console.WriteLine($"  Goodbye, {s}!");
    }
    static void Main()
    {
        // Declare instances of the custom delegate.
        CustomCallback 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;
        // Initialize the delegate object hiDel that references the
        // method Hello.
        hiDel = Hello;
        // Initialize 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!
*/