Мульткаст делегаты в C# - это особый тип делегатов, которые могут указывать на и последовательно вызывать несколько методов, сохраняя их в своем списке вызовов, или "invocation list". Мульткаст делегаты можно использовать для реализации событий и обратных вызовов, где одно событие или вызов должен вызывать несколько методов.
Операторы += и -= используются для добавления и удаления методов из списка вызовов мульткаст делегата соответственно.
Вот простой пример мульткаст делегата:
```csharp
public delegate void SimpleDelegate(string param);
public class Program
{
public static void Main()
{
SimpleDelegate del1 = Method1;
SimpleDelegate del2 = Method2;
SimpleDelegate multicastDel = del1 + del2;
multicastDel("Hello, World!");
}
public static void Method1(string message)
{
Console.WriteLine("Method1: " + message);
}
public static void Method2(string message)
{
Console.WriteLine("Method2: " + message);
}
}
```
В этом примере multicastDel - это мульткаст делегат, который указывает на Method1 и Method2. Когда multicastDel вызывается, он вызывает Method1 и Method2 последовательно.
Однако стоит учесть, что мульткаст делегаты не могут использоваться с методами, которые возвращают значение (кроме событий). Если вы все же попытаетесь использовать мульткаст делегат с методами, которые возвращают значение, то при вызове делегата будет возвращено значение только последнего метода в списке вызовов.