Метод 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