Прочитать на английском

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


Delegate.Combine Метод

Определение

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

Перегрузки

Combine(Delegate[])

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

Combine(ReadOnlySpan<Delegate>)

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

Combine(Delegate, Delegate)

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

Combine(Delegate[])

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

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

C#
public static Delegate Combine(params Delegate[] delegates);
C#
public static Delegate? Combine(params Delegate?[]? delegates);
C#
public static Delegate Combine(Delegate[] delegates);
C#
[System.Runtime.InteropServices.ComVisible(true)]
public static Delegate Combine(params Delegate[] delegates);

Параметры

delegates
Delegate[]

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

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

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

Атрибуты

Исключения

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

Комментарии

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

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

Примечание

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Combine(ReadOnlySpan<Delegate>)

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

C#
public static Delegate? Combine(scoped ReadOnlySpan<Delegate?> delegates);

Параметры

delegates
ReadOnlySpan<Delegate>

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

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

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

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

.NET 10 и .NET 9
Продукт Версии
.NET 9, 10

Combine(Delegate, Delegate)

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

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

C#
public static Delegate Combine(Delegate a, Delegate b);
C#
public static Delegate? Combine(Delegate? a, Delegate? b);

Параметры

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 полезно для создания обработчиков событий, которые вызывают несколько методов при каждом возникновении события.

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0