Udostępnij za pośrednictwem


MulticastDelegate Klasa

Definicja

Reprezentuje delegata multiemisji; oznacza to, delegat, który może mieć więcej niż jeden element na liście wywołań.

public ref class MulticastDelegate abstract : Delegate
public abstract class MulticastDelegate : Delegate
[System.Serializable]
public abstract class MulticastDelegate : Delegate
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class MulticastDelegate : Delegate
type MulticastDelegate = class
    inherit Delegate
[<System.Serializable>]
type MulticastDelegate = class
    inherit Delegate
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type MulticastDelegate = class
    inherit Delegate
Public MustInherit Class MulticastDelegate
Inherits Delegate
Dziedziczenie
MulticastDelegate
Atrybuty

Przykłady

W poniższym przykładzie zdefiniowano klasę StringContainer, która zawiera kolekcję ciągów. Jednym z jego elementów członkowskich jest delegat CheckAndDisplayDelegate, który służy do wyświetlania ciągów przechowywanych w obiekcie StringContainer spełniającym określone kryteria. Delegat przyjmuje jeden ciąg jako parametr i zwraca void (lub w Visual Basic jest to procedura Sub). Zawiera również metodę DisplayAllQualified, która ma jeden parametr, CheckAndDisplayDelegate delegata. Dzięki temu metoda może być wywoływana i wyświetlać zestaw ciągów, które są filtrowane na podstawie metod, które zawiera delegat.

W przykładzie zdefiniowano również klasę narzędziową StringExtensions, która ma dwie metody:

  • ConStart, który wyświetla ciągi rozpoczynające się od spółgłoski.

  • VowelStart, który wyświetla ciągi rozpoczynające się od samogłoski.

Należy pamiętać, że obie metody zawierają jeden parametr ciągu i zwracają void. Innymi słowy, obie metody można przypisać do delegata CheckAndDisplayDelegate.

Metoda Test.Main to punkt wejścia aplikacji. Tworzy wystąpienie obiektu StringContainer, wypełnia go ciągami i tworzy dwa CheckAndDisplayDelegate delegatów, conStart i vowelStart, które wywołują jedną metodę. Następnie wywołuje metodę Delegate.Combine w celu utworzenia delegata multipleDelegates, który początkowo zawiera delegatów ConStart i VowelStart. Należy pamiętać, że po wywołaniu delegata multipleDelegates zostaną wyświetlone wszystkie ciągi w kolekcji w ich oryginalnej kolejności. Jest to spowodowane tym, że każda litera jest przekazywana oddzielnie do każdego delegata, a każda litera spełnia kryteria filtrowania tylko jednego z dwóch delegatów. Na koniec po wywołaniach Delegate.Remove i Delegate.CombinemultipleDelegates zawiera dwa delegaty conStart. Po wywołaniu każdy ciąg w obiekcie StringContainer jest wyświetlany dwa razy.

using namespace System;
using namespace System::Collections::Generic;

ref class StringContainer
{
private:
   // A generic list object that holds the strings.
   List<String^>^ container = gcnew List<String^>;

public:
   // Define a delegate to handle string display.
   delegate void CheckAndDisplayDelegate(String^ str);

   // A method that adds more strings to the collection.
   void AddString(String^ str)
   {
      container->Add(str);
   }

   // Iterate through the strings and invoke the method(s) that the delegate points to.
   void DisplayAllQualified(CheckAndDisplayDelegate^ displayDelegate)
   {
      for each (String^ str in container)
         displayDelegate(str);
//       System::Collections::IEnumerator^ myEnum = container->GetEnumerator();
//       while ( myEnum->MoveNext() )
//       {
//          String^ str = safe_cast<String^>(myEnum->Current);
//          displayDelegate(str);
//      }
   }
};

//end of class StringContainer
// This class contains a few sample methods
ref class StringFuncs
{
public:

   // This method prints a String* that it is passed if the String* starts with a vowel
   static void ConStart(String^ str)
   {
      if (  !(str[ 0 ] == 'a' || str[ 0 ] == 'e' || str[ 0 ] == 'i' || str[ 0 ] == 'o' || str[ 0 ] == 'u') )
            Console::WriteLine( str );
   }

   // This method prints a String* that it is passed if the String* starts with a consonant
   static void VowelStart( String^ str )
   {
      if ( (str[ 0 ] == 'a' || str[ 0 ] == 'e' || str[ 0 ] == 'i' || str[ 0 ] == 'o' || str[ 0 ] == 'u') )
            Console::WriteLine( str );
   }
};

// This function demonstrates using Delegates, including using the Remove and
// Combine methods to create and modify delegate combinations.
int main()
{
   // Declare the StringContainer class and add some strings
   StringContainer^ container = gcnew StringContainer;
   container->AddString( "This" );
   container->AddString( "is" );
   container->AddString( "a" );
   container->AddString( "multicast" );
   container->AddString( "delegate" );
   container->AddString( "example" );

// RETURN HERE.
   // Create two delegates individually using different methods
   StringContainer::CheckAndDisplayDelegate^ conStart = gcnew StringContainer::CheckAndDisplayDelegate( StringFuncs::ConStart );
   StringContainer::CheckAndDisplayDelegate^ vowelStart = gcnew StringContainer::CheckAndDisplayDelegate( StringFuncs::VowelStart );

   // Get the list of all delegates assigned to this MulticastDelegate instance. 
   array<Delegate^>^ delegateList = conStart->GetInvocationList();
   Console::WriteLine("conStart contains {0} delegate(s).", delegateList->Length);
   delegateList = vowelStart->GetInvocationList();
   Console::WriteLine("vowelStart contains {0} delegate(s).\n", delegateList->Length );

   // Determine whether the delegates are System::Multicast delegates
   if ( dynamic_cast<System::MulticastDelegate^>(conStart) && dynamic_cast<System::MulticastDelegate^>(vowelStart) )
   {
      Console::WriteLine("conStart and vowelStart are derived from MulticastDelegate.\n");
   }

   // Execute the two delegates.
   Console::WriteLine("Executing the conStart delegate:" );
   container->DisplayAllQualified(conStart);
   Console::WriteLine();
   Console::WriteLine("Executing the vowelStart delegate:" );
   container->DisplayAllQualified(vowelStart);

   // Create a new MulticastDelegate and call Combine to add two delegates.
   StringContainer::CheckAndDisplayDelegate^ multipleDelegates =
           dynamic_cast<StringContainer::CheckAndDisplayDelegate^>(Delegate::Combine(conStart, vowelStart));

   // How many delegates does multipleDelegates contain?
   delegateList = multipleDelegates->GetInvocationList();
   Console::WriteLine("\nmultipleDelegates contains {0} delegates.\n", 
                      delegateList->Length );

   //       // Pass this multicast delegate to DisplayAllQualified.
   Console::WriteLine("Executing the multipleDelegate delegate.");
   container->DisplayAllQualified(multipleDelegates);
   // Call remove and combine to change the contained delegates.
   multipleDelegates = dynamic_cast<StringContainer::CheckAndDisplayDelegate^>
                      (Delegate::Remove(multipleDelegates, vowelStart));
   multipleDelegates = dynamic_cast<StringContainer::CheckAndDisplayDelegate^>
                      (Delegate::Combine(multipleDelegates, conStart));

   // Pass multipleDelegates to DisplayAllQualified again.
   Console::WriteLine("\nExecuting the multipleDelegate delegate with two conStart delegates:");
   container->DisplayAllQualified(multipleDelegates);
} 
// The example displays the following output:
//    conStart contains 1 delegate(s).
//    vowelStart contains 1 delegate(s).
//    
//    conStart and vowelStart are derived from MulticastDelegate.
//    
//    Executing the conStart delegate:
//    This
//    multicast
//    delegate
//    
//    Executing the vowelStart delegate:
//    is
//    a
//    example
//    
//    
//    multipleDelegates contains 2 delegates.
//    
//    Executing the multipleDelegate delegate.
//    This
//    is
//    a
//    multicast
//    delegate
//    example
//    
//    Executing the multipleDelegate delegate with two conStart delegates:
//    This
//    This
//    multicast
//    multicast
//    delegate
//    delegate
using System;
using System.Collections.Generic;

class StringContainer
{
   // Define a delegate to handle string display.
   public delegate void CheckAndDisplayDelegate(string str);

   // A generic list object that holds the strings.
   private List<String> container = new List<String>();

   // A method that adds strings to the collection.
   public void AddString(string str)
   {
      container.Add(str);
   }

   // Iterate through the strings and invoke the method(s) that the delegate points to.
   public void DisplayAllQualified(CheckAndDisplayDelegate displayDelegate)
   {
      foreach (var str in container) {
         displayDelegate(str);
      }
   }
 }

// This class defines some methods to display strings.
class StringExtensions
{
   // Display a string if it starts with a consonant.
   public static void ConStart(string str)
   {
      if (!(str[0]=='a'||str[0]=='e'||str[0]=='i'||str[0]=='o'||str[0]=='u'))
          Console.WriteLine(str);
   }

   // Display a string if it starts with a vowel.
   public static void VowelStart(string str)
   {
      if ((str[0]=='a'||str[0]=='e'||str[0]=='i'||str[0]=='o'||str[0]=='u'))
          Console.WriteLine(str);
   }
}

// Demonstrate the use of delegates, including the Remove and
// Combine methods to create and modify delegate combinations.
class Test
{
   static public void Main()
   {
      // Declare the StringContainer class and add some strings
      StringContainer container = new StringContainer();
      container.AddString("This");
      container.AddString("is");
      container.AddString("a");
      container.AddString("multicast");
      container.AddString("delegate");
      container.AddString("example");

      // Create two delegates individually using different methods.
      StringContainer.CheckAndDisplayDelegate conStart = StringExtensions.ConStart;
      StringContainer.CheckAndDisplayDelegate vowelStart = StringExtensions.VowelStart;

      // Get the list of all delegates assigned to this MulticastDelegate instance.
      Delegate[] delegateList = conStart.GetInvocationList();
      Console.WriteLine("conStart contains {0} delegate(s).", delegateList.Length);
      delegateList = vowelStart.GetInvocationList();
      Console.WriteLine("vowelStart contains {0} delegate(s).\n", delegateList.Length);

      // Determine whether the delegates are System.Multicast delegates.
      if (conStart is System.MulticastDelegate && vowelStart is System.MulticastDelegate)
          Console.WriteLine("conStart and vowelStart are derived from MulticastDelegate.\n");

      // Execute the two delegates.
      Console.WriteLine("Executing the conStart delegate:");
      container.DisplayAllQualified(conStart);
      Console.WriteLine();
      Console.WriteLine("Executing the vowelStart delegate:");
      container.DisplayAllQualified(vowelStart);
      Console.WriteLine();

      // Create a new MulticastDelegate and call Combine to add two delegates.
      StringContainer.CheckAndDisplayDelegate multipleDelegates =
            (StringContainer.CheckAndDisplayDelegate) Delegate.Combine(conStart, vowelStart);

      // How many delegates does multipleDelegates contain?
      delegateList = multipleDelegates.GetInvocationList();
      Console.WriteLine("\nmultipleDelegates contains {0} delegates.\n",
                        delegateList.Length);

      // Pass this multicast delegate to DisplayAllQualified.
      Console.WriteLine("Executing the multipleDelegate delegate.");
      container.DisplayAllQualified(multipleDelegates);

      // Call remove and combine to change the contained delegates.
      multipleDelegates = (StringContainer.CheckAndDisplayDelegate) Delegate.Remove(multipleDelegates, vowelStart);
      multipleDelegates = (StringContainer.CheckAndDisplayDelegate) Delegate.Combine(multipleDelegates, conStart);

      // Pass multipleDelegates to DisplayAllQualified again.
      Console.WriteLine("\nExecuting the multipleDelegate delegate with two conStart delegates:");
      container.DisplayAllQualified(multipleDelegates);
   }
}
// The example displays the following output:
//    conStart contains 1 delegate(s).
//    vowelStart contains 1 delegate(s).
//
//    conStart and vowelStart are derived from MulticastDelegate.
//
//    Executing the conStart delegate:
//    This
//    multicast
//    delegate
//
//    Executing the vowelStart delegate:
//    is
//    a
//    example
//
//
//    multipleDelegates contains 2 delegates.
//
//    Executing the multipleDelegate delegate.
//    This
//    is
//    a
//    multicast
//    delegate
//    example
//
//    Executing the multipleDelegate delegate with two conStart delegates:
//    This
//    This
//    multicast
//    multicast
//    delegate
//    delegate
module Test

open System

// Define a delegate to handle string display.
type CheckAndDisplayDelegate = delegate of string -> unit

type StringContainer() =
    // A generic ResizeArray object that holds the strings.
    let container = ResizeArray()

    // A method that adds strings to the collection.
    member _.AddString(str) =
        container.Add str

    // Iterate through the strings and invoke the method(s) that the delegate points to.
    member _.DisplayAllQualified(displayDelegate: CheckAndDisplayDelegate) =
        for str in container do
            displayDelegate.Invoke str

// This module defines some functions to display strings.
module StringExtensions =
    // Display a string if it starts with a consonant.
    let conStart (str: string) =
        match str[0] with
        | 'a' | 'e' | 'i' | 'o' | 'u' -> ()
        | _ -> printfn $"{str}"
 
    // Display a string if it starts with a vowel.
    let vowelStart (str: string) =
        match str[0] with
        | 'a' | 'e' | 'i' | 'o' | 'u' -> printfn $"{str}"
        | _ -> ()
 
// Demonstrate the use of delegates, including the Remove and
// Combine methods to create and modify delegate combinations.
[<EntryPoint>]
let main _ =
    // Declare the StringContainer class and add some strings
    let container = StringContainer()
    container.AddString "This"
    container.AddString "is"
    container.AddString "a"
    container.AddString "multicast"
    container.AddString "delegate"
    container.AddString "example"

    // Create two delegates individually using different methods.
    let conStart = CheckAndDisplayDelegate StringExtensions.conStart
    let vowelStart = CheckAndDisplayDelegate StringExtensions.vowelStart 

    // Get the list of all delegates assigned to this MulticastDelegate instance.
    let delegateList = conStart.GetInvocationList()
    printfn $"conStart contains {delegateList.Length} delegate(s)."
    let delegateList = vowelStart.GetInvocationList()
    printfn $"vowelStart contains {delegateList.Length} delegate(s).\n"

    // Determine whether the delegates are System.Multicast delegates.
    if box conStart :? System.MulticastDelegate && box vowelStart :? System.MulticastDelegate then
        printfn "conStart and vowelStart are derived from MulticastDelegate.\n"

    // Execute the two delegates.
    printfn "Executing the conStart delegate:"
    container.DisplayAllQualified conStart
    printfn "\nExecuting the vowelStart delegate:"
    container.DisplayAllQualified vowelStart
    printfn ""

    // Create a new MulticastDelegate and call Combine to add two delegates.
    let multipleDelegates =
        Delegate.Combine(conStart, vowelStart) :?> CheckAndDisplayDelegate

    // How many delegates does multipleDelegates contain?
    let delegateList = multipleDelegates.GetInvocationList()
    printfn $"\nmultipleDelegates contains {delegateList.Length} delegates.\n"

    // Pass this multicast delegate to DisplayAllQualified.
    printfn "Executing the multipleDelegate delegate."
    container.DisplayAllQualified multipleDelegates

    // Call remove and combine to change the contained delegates.
    let multipleDelegates = Delegate.Remove(multipleDelegates, vowelStart) :?> CheckAndDisplayDelegate
    let multipleDelegates = Delegate.Combine(multipleDelegates, conStart) :?> CheckAndDisplayDelegate

    // Pass multipleDelegates to DisplayAllQualified again.
    printfn "\nExecuting the multipleDelegate delegate with two conStart delegates:"
    printfn $"{multipleDelegates}"
    0
// The example displays the following output:
//    conStart contains 1 delegate(s).
//    vowelStart contains 1 delegate(s).
//
//    conStart and vowelStart are derived from MulticastDelegate.
//
//    Executing the conStart delegate:
//    This
//    multicast
//    delegate
//
//    Executing the vowelStart delegate:
//    is
//    a
//    example
//
//
//    multipleDelegates contains 2 delegates.
//
//    Executing the multipleDelegate delegate.
//    This
//    is
//    a
//    multicast
//    delegate
//    example
//
//    Executing the multipleDelegate delegate with two conStart delegates:
//    This
//    This
//    multicast
//    multicast
//    delegate
//    delegate
Imports System.Collections.Generic

Class StringContainer
    ' Define a delegate to handle string display. 
    Delegate Sub CheckAndPrintDelegate(ByVal str As String)

    ' A generic list object that holds the strings.
    Private container As New List(Of String)()

     ' A method that adds strings to the collection. 
     Public Sub AddString(ByVal s As String)
        container.Add(s)
    End Sub

    ' Iterate through the strings and invoke the method(s) that the delegate points to.
    Public Sub DisplayAllQualified(ByVal displayDelegate As CheckAndPrintDelegate)
        For Each s In container
            displayDelegate(s)
        Next
    End Sub
End Class

' This class defines some methods to display strings. 
Class StringExtensions
    ' Display a string if it starts with a consonant. 
    Public Shared Sub ConStart(ByVal str As String)
        If Not (str.Chars(0) = "a"c Or str.Chars(0) = "e"c Or str.Chars(0) = "i"c _ 
                Or str.Chars(0) = "o"c Or str.Chars(0) = "u"c) Then
            Console.WriteLine(str)
        End If
    End Sub 

    ' Display a string if it starts with a vowel.
    Public Shared Sub VowelStart(ByVal str As String)
        If (str.Chars(0) = "a"c Or str.Chars(0) = "e"c Or str.Chars(0) = "i"c _
            Or str.Chars(0) = "o"c Or str.Chars(0) = "u"c) Then
            Console.WriteLine(str)
        End If
    End Sub 
End Class 

' Demonstrate the use of delegates, including the Remove and 
' Combine methods to create and modify delegate combinations. 
Class Test
    Public Shared Sub Main()
        ' Declare the StringContainer class and add some strings
        Dim container As New StringContainer()
        container.AddString("this")
        container.AddString("is")
        container.AddString("a")
        container.AddString("multicast")
        container.AddString("delegate")
        container.AddString("example")

        ' Create two delegates individually using different methods.
        Dim constart As StringContainer.CheckAndPrintDelegate = AddressOf StringExtensions.ConStart
        Dim vowelStart As StringContainer.CheckAndPrintDelegate = AddressOf StringExtensions.VowelStart

        ' Get the list of all delegates assigned to this MulticastDelegate instance. 
        Dim delegateList() As [Delegate] = conStart.GetInvocationList()
        Console.WriteLine("conStart contains {0} delegate(s).", delegateList.Length)
        delegateList = vowelStart.GetInvocationList()
        Console.WriteLine("vowelStart contains {0} delegate(s).", delegateList.Length)
        Console.WriteLine()
        
        ' Determine whether the delegates are System.Multicast delegates
        If TypeOf conStart Is System.MulticastDelegate And TypeOf vowelStart Is System.MulticastDelegate Then
            Console.WriteLine("conStart and vowelStart are derived from MulticastDelegate.")
            Console.WriteLine()
        End If

        ' Run the two single delegates one after the other.
        Console.WriteLine("Executing the conStart delegate:")
        container.DisplayAllQualified(conStart)
        Console.WriteLine("Executing the vowelStart delegate:")
        container.DisplayAllQualified(vowelStart)
        Console.WriteLine()

        ' Create a new MulticastDelegate and call Combine to add two delegates.
        Dim multipleDelegates As StringContainer.CheckAndPrintDelegate = 
                  CType([Delegate].Combine(conStart, vowelStart), 
                  StringContainer.CheckAndPrintDelegate)

        ' How many delegates does multipleDelegates contain?
        delegateList = multipleDelegates.GetInvocationList()
        Console.WriteLine("{1}multipleDelegates contains {0} delegates.{1}",
                          delegateList.Length, vbCrLf)

        ' Pass this mulitcast delegate to DisplayAllQualified.
        Console.WriteLine("Executing the multipleDelegate delegate.")
        container.DisplayAllQualified(multipleDelegates)

        ' Call remove and combine to change the contained delegates.
        multipleDelegates = CType([Delegate].Remove(multipleDelegates, vowelStart), 
                            StringContainer.CheckAndPrintDelegate)
        multipleDelegates = CType([Delegate].Combine(multipleDelegates, conStart), 
                            StringContainer.CheckAndPrintDelegate)

        ' Pass multipleDelegates to DisplayAllQualified again.
        Console.WriteLine()
        Console.WriteLine("Executing the multipleDelegate delegate with two conStart delegates:")
        container.DisplayAllQualified(multipleDelegates)
    End Sub 
End Class 
' The example displays the following output:
'    conStart contains 1 delegate(s).
'    vowelStart contains 1 delegate(s).
'    
'    conStart and vowelStart are derived from MulticastDelegate.
'    
'    Executing the conStart delegate:
'    This
'    multicast
'    delegate
'    
'    Executing the vowelStart delegate:
'    is
'    a
'    example
'    
'    
'    multipleDelegates contains 2 delegates.
'    
'    Executing the multipleDelegate delegate.
'    This
'    is
'    a
'    multicast
'    delegate
'    example
'    
'    Executing the multipleDelegate delegate with two conStart delegates:
'    This
'    This
'    multicast
'    multicast
'    delegate
'    delegate

Uwagi

MulticastDelegate jest klasą specjalną. Kompilatory i inne narzędzia mogą pochodzić z tej klasy, ale nie można ich jawnie utworzyć. To samo dotyczy klasy Delegate.

Oprócz metod, które delegować typy dziedziczą po MulticastDelegate, środowisko uruchomieniowe języka wspólnego udostępnia dwie specjalne metody: BeginInvoke i EndInvoke. Aby uzyskać więcej informacji na temat tych metod, zobacz Wywoływanie metod synchronicznych asynchronicznie.

MulticastDelegate ma połączoną listę delegatów, nazywaną listą wywołań, składającą się z co najmniej jednego elementu. Po wywołaniu delegata multiemisji delegaty na liście wywołań są wywoływane synchronicznie w kolejności ich wyświetlania. Jeśli podczas wykonywania listy wystąpi błąd, zgłaszany jest wyjątek.

Konstruktory

MulticastDelegate(Object, String)

Inicjuje nowe wystąpienie klasy MulticastDelegate.

MulticastDelegate(Type, String)

Inicjuje nowe wystąpienie klasy MulticastDelegate.

Właściwości

HasSingleTarget

Pobiera wartość wskazującą, czy Delegate ma jeden element docelowy wywołania.

(Odziedziczone po Delegate)
Method

Pobiera metodę reprezentowaną przez delegata.

(Odziedziczone po Delegate)
Target

Pobiera wystąpienie klasy, na którym bieżący delegat wywołuje metodę wystąpienia.

(Odziedziczone po Delegate)

Metody

Clone()

Tworzy płytkią kopię delegata.

(Odziedziczone po Delegate)
CombineImpl(Delegate)

Łączy ten Delegate z określonym Delegate w celu utworzenia nowego delegata.

CombineImpl(Delegate)

Łączy listy wywołań określonego delegata multiemisji (można połączyć) i bieżącego delegata multiemisji (można połączyć).

(Odziedziczone po Delegate)
DynamicInvoke(Object[])

Dynamicznie wywołuje (późną granicę) metodę reprezentowaną przez bieżącego delegata.

(Odziedziczone po Delegate)
DynamicInvokeImpl(Object[])

Przetwarza pełną listę wywołań.

DynamicInvokeImpl(Object[])

Dynamicznie wywołuje (późną granicę) metodę reprezentowaną przez bieżącego delegata.

(Odziedziczone po Delegate)
Equals(Object)

Określa, czy ten delegat multiemisji i określony obiekt są równe.

GetHashCode()

Zwraca kod skrótu dla tego wystąpienia.

GetInvocationList()

Zwraca listę wywołań tego delegata multiemisji w kolejności wywołania.

GetMethodImpl()

Zwraca metodę reprezentowaną przez bieżącą MulticastDelegate.

GetMethodImpl()

Pobiera metodę reprezentowaną przez bieżącego delegata.

(Odziedziczone po Delegate)
GetObjectData(SerializationInfo, StreamingContext)
Przestarzałe.

Wypełnia obiekt SerializationInfo wszystkimi danymi potrzebnymi do serializacji tego wystąpienia.

GetObjectData(SerializationInfo, StreamingContext)
Przestarzałe.

Nieobsługiwane.

(Odziedziczone po Delegate)
GetType()

Pobiera Type bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Object.

(Odziedziczone po Object)
RemoveImpl(Delegate)

Usuwa element z listy wywołań tego MulticastDelegate, który jest równy określonemu delegatowi.

RemoveImpl(Delegate)

Usuwa listę wywołań delegata z listy wywołań innego delegata.

(Odziedziczone po Delegate)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Operatory

Equality(MulticastDelegate, MulticastDelegate)

Określa, czy dwa obiekty MulticastDelegate są równe.

Inequality(MulticastDelegate, MulticastDelegate)

Określa, czy dwa obiekty MulticastDelegate nie są równe.

Metody rozszerzania

GetMethodInfo(Delegate)

Pobiera obiekt reprezentujący metodę reprezentowaną przez określonego delegata.

Dotyczy