> ## Content Index
> Fetch the complete content index at: https://blog.jsinh.in/llms.txt
> Use this file to discover other available public pages before exploring further.

# Multicasting and delegates in C#
- URL: https://blog.jsinh.in/multicasting-and-delegates-in-c-sharp/
- Published: 2014-06-19T02:18:00.000Z
- Updated: 2026-07-07T15:11:53.000Z
- Author: Jsinh
- Tags: #Import 2026-10-04 19:16

One interesting feature of `delegates` in C# is that it provide ways to attach / detach more than one methods that has method signature similar to the delegate declared and combine them together.

This combining or attaching / detaching of methods to a `delegate` is called **Multicasting**.

### Behind the scenes:

This multicasting is possible because delegates inherit from `System.MulticastDelegate` which in turn inherits from `System.Delegate`, which inherits from `Object` class.

### How to multicast:

Multicasting can be done using `+=` and / or `-=` operator.

Here is an example that demonstrate use of `+=` and `-=` to multicast delegates.

```
private delegate void Greetings();

static void Main(string[] args)
{
	SayHello();
    Console.ReadLine();
}

public static void SayHelloToScott()
{
	Console.WriteLine("Hi Mr. Delegate, from Scott");
}

public static void SayHelloToAlex()
{
    Console.WriteLine("How about a coffee? from Alex");
}

public static void SayHelloToJasmine()
{
	Console.WriteLine("Hi delegates, from Jasmine");
}

public static void SayHelloToJsinh()
{
    Console.WriteLine("Delegates aahaa, from Jsinh");
}

public static void SayHello()
{
    Greetings greets = SayHelloToScott;
    greets += SayHelloToAlex;
    greets += SayHelloToJasmine;
    greets += SayHelloToJsinh;
    greets();

    Console.WriteLine(Environment.NewLine);
    greets -= SayHelloToAlex;
    greets();

    Console.WriteLine(Environment.NewLine);
    var test = greets.GetInvocationList();
    foreach (var info in test.Select(item => item.GetMethodInfo()))
    {
        Console.WriteLine(info.Name);
	}
}

```

**Output**:

```
Hi Mr. Delegate, from Scott
How about a coffee? from Alex
Hi delegates, from Jasmine
Delegates aahaa, from Jsinh

Hi Mr. Delegate, from Scott
Hi delegates, from Jasmine
Delegates aahaa, from Jsinh

SayHelloToScott
SayHelloToJasmine
SayHelloToJsinh

```

### More

System.MulticastDelegate contains a method `GetInvocationList()`. It provides a list of Delegate instance which are attached to this delegate instance.

Happy Coding !!