Поделиться через


Delegate.Combine Метод

Определение

Объединяет списки вызовов указанных делегатов многоадресной рассылки (комбинируемые).

Перегрузки

Combine(Delegate[])

Объединяет списки вызовов массива делегатов.

Combine(ReadOnlySpan<Delegate>)

Объединяет списки вызовов диапазона делегатов.

Combine(Delegate, Delegate)

Объединяет списки вызовов двух делегатов.

Combine(Delegate[])

Исходный код:
Delegate.cs
Исходный код:
Delegate.cs
Исходный код:
Delegate.cs

Объединяет списки вызовов массива делегатов.

public:
 static Delegate ^ Combine(... cli::array <Delegate ^> ^ delegates);
public:
 static Delegate ^ Combine(cli::array <Delegate ^> ^ delegates);
public static Delegate Combine (params Delegate[] delegates);
public static Delegate? Combine (params Delegate?[]? delegates);
public static Delegate Combine (Delegate[] delegates);
[System.Runtime.InteropServices.ComVisible(true)]
public static Delegate Combine (params Delegate[] delegates);
static member Combine : Delegate[] -> Delegate
[<System.Runtime.InteropServices.ComVisible(true)>]
static member Combine : Delegate[] -> Delegate
Public Shared Function Combine (ParamArray delegates As Delegate()) As Delegate
Public Shared Function Combine (delegates As Delegate()) As Delegate

Параметры

delegates
Delegate[]

Массив делегатов для объединения.

Возвращаемое значение

Новый делегат со списком вызовов, который объединяет списки вызовов делегатов в массиве delegates. Возвращает null, если delegatesnull, если delegates содержит нулевые элементы или если каждая запись в delegatesnull.

Атрибуты

Исключения

Не все записи, отличные от NULL в delegates, являются экземплярами одного типа делегата.

Комментарии

Если массив delegates содержит записи, которые null, эти записи игнорируются.

Список вызовов может содержать повторяющиеся записи; То есть записи, ссылающиеся на тот же метод в одном объекте.

Заметка

Универсальные делегаты, совместимые с назначением из-за дисперсии, не обязательно объединяются. Для объединения типы должны соответствовать точно. Например, предположим, что класс с именем Derived является производным от класса с именем Base. Делегат типа Action<Base> (Action(Of Base) в Visual Basic) можно назначить переменной типа Action<Derived>, как описано в ковариации и контравариации, но два делегата не могут быть объединены, так как типы не соответствуют точно.

Combine полезно для создания обработчиков событий, которые вызывают несколько методов при каждом возникновении события.

См. также раздел

Применяется к

Combine(ReadOnlySpan<Delegate>)

Объединяет списки вызовов диапазона делегатов.

public:
 static Delegate ^ Combine(ReadOnlySpan<Delegate ^> delegates);
public static Delegate? Combine (scoped ReadOnlySpan<Delegate?> delegates);
static member Combine : ReadOnlySpan<Delegate> -> Delegate
Public Shared Function Combine (delegates As ReadOnlySpan(Of Delegate)) As Delegate

Параметры

delegates
ReadOnlySpan<Delegate>

Диапазон делегатов для объединения.

Возвращаемое значение

Новый делегат со списком вызовов, который объединяет списки вызовов делегатов в диапазоне delegates. Возвращает null, если delegatesnull, если delegates содержит нулевые элементы или если каждая запись в delegatesnull.

Применяется к

Combine(Delegate, Delegate)

Исходный код:
Delegate.cs
Исходный код:
Delegate.cs
Исходный код:
Delegate.cs

Объединяет списки вызовов двух делегатов.

public:
 static Delegate ^ Combine(Delegate ^ a, Delegate ^ b);
public static Delegate Combine (Delegate a, Delegate b);
public static Delegate? Combine (Delegate? a, Delegate? b);
static member Combine : Delegate * Delegate -> Delegate
Public Shared Function Combine (a As Delegate, b As Delegate) As Delegate

Параметры

a
Delegate

Делегат, список вызовов которого приходится первым.

b
Delegate

Делегат, список вызовов которого истекает.

Возвращаемое значение

Новый делегат со списком вызовов, который объединяет списки вызовов a и b в этом порядке. Возвращает a, если bnull, возвращает b, если a является пустой ссылкой, и возвращает пустую ссылку, если оба a и b являются пустыми ссылками.

Исключения

Оба a и b не null, а a и b не являются экземплярами одного и того же типа делегата.

Комментарии

Список вызовов может содержать повторяющиеся записи; То есть записи, ссылающиеся на тот же метод в одном объекте.

Заметка

Универсальные делегаты, совместимые с назначением из-за дисперсии, не обязательно объединяются. Для объединения типы должны соответствовать точно. Например, предположим, что класс с именем Derived является производным от класса с именем Base. Делегат типа Action<Base> (Action(Of Base) в Visual Basic) можно назначить переменной типа Action<Derived>, как описано в ковариации и контравариации, но два делегата не могут быть объединены, так как типы не соответствуют точно.

Combine полезно для создания обработчиков событий, которые вызывают несколько методов при каждом возникновении события.

См. также раздел

Применяется к