Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1130 of 1492 menu
◀ ▶

Метод Combine

Delegate.Combine принимает два или больше делегата и возвращает новый экземпляр типа Delegate. Его приводят к Action или к своему типу делегата, затем вызывают - выполняются все методы по порядку. Так собирают цепочку без оператора +=.

Синтаксис

Action chain = (Action)Delegate.Combine(first, second); chain();

Пример

Давайте объединим два Action через Combine:

using System; class Program { static void First() { Console.Write("1"); } static void Second() { Console.Write("2"); } static void Main() { Action a = First; Action b = Second; Action chain = (Action)Delegate.Combine(a, b); chain(); } }

Результат выполнения кода:

"12"

Пример

Давайте соберём цепочку из пользовательского делегата:

using System; delegate void StepHandler(); class Program { static void StepA() { Console.Write("a"); } static void StepB() { Console.Write("b"); } static void Main() { StepHandler a = StepA; StepHandler b = StepB; StepHandler chain = (StepHandler)Delegate.Combine(a, b); chain(); } }

Результат выполнения кода:

"ab"

Пример

Давайте выведем две строки через общий вызов:

using System; class Program { static void ShowFirst() { Console.WriteLine("12345"); } static void ShowSecond() { Console.WriteLine("abcde"); } static void Main() { Action a = ShowFirst; Action b = ShowSecond; Action chain = (Action)Delegate.Combine(a, b); chain(); } }

Результат выполнения кода:

12345 abcde

Смотрите также

  • Remove,
    который убирает метод из цепочки
  • GetInvocationList,
    который возвращает массив звеньев
  • мультикаст,
    когда один делегат вызывает несколько целей
  • Delegate,
    класс, на котором объявлен Combine
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить