Bird
Raised Fist0
C Sharp (C#)programming~5 mins

Multicast delegates in C Sharp (C#)

Choose your learning style10 modes available
Introduction
Multicast delegates let you call multiple methods with one delegate. It helps when you want to do many things in order with a single call.
You want to notify several parts of your program about an event.
You want to run multiple methods one after another without calling each separately.
You want to add or remove methods dynamically to a list of actions.
You want to keep your code organized by grouping related method calls.
You want to implement event handling where many listeners respond to one event.
Syntax
C Sharp (C#)
delegate void MyDelegate();

MyDelegate d = Method1;
d += Method2;
d();
Use '+=' to add methods to the delegate list.
Use '-=' to remove methods from the delegate list.
Examples
Calls Alert and then Log methods in order.
C Sharp (C#)
delegate void Notify();

void Alert() { Console.WriteLine("Alert!"); }
void Log() { Console.WriteLine("Log entry"); }

Notify notify = Alert;
notify += Log;
notify();
Calls Hello and Bye with the same message.
C Sharp (C#)
delegate void ShowMessage(string msg);

void Hello(string msg) { Console.WriteLine($"Hello {msg}"); }
void Bye(string msg) { Console.WriteLine($"Bye {msg}"); }

ShowMessage show = Hello;
show += Bye;
show("Friend");
Sample Program
This program creates a multicast delegate that calls two methods. Then it removes one and calls the remaining method.
C Sharp (C#)
using System;

class Program
{
    delegate void MultiDelegate();

    static void First() { Console.WriteLine("First method called"); }
    static void Second() { Console.WriteLine("Second method called"); }

    static void Main()
    {
        MultiDelegate multi = First;
        multi += Second;

        multi();

        multi -= First;

        Console.WriteLine("After removing First method:");
        multi();
    }
}
OutputSuccess
Important Notes
If any method in the multicast delegate throws an exception, the remaining methods will not be called.
The return value of a multicast delegate is the return value of the last method called.
Multicast delegates work only with void return types or when you don't need the return value.
Summary
Multicast delegates let you call multiple methods with one delegate call.
Use '+=' to add and '-=' to remove methods from the delegate list.
They are useful for event handling and running multiple actions in order.

Practice

(1/5)
1. What is the main purpose of a multicast delegate in C#?
easy
A. To call multiple methods with a single delegate invocation
B. To store only one method reference at a time
C. To create a delegate that returns multiple values
D. To prevent methods from being called more than once

Solution

  1. Step 1: Understand delegate basics

    A delegate holds references to methods and can invoke them.
  2. Step 2: Identify multicast delegate behavior

    Multicast delegates can hold multiple method references and call them all in order.
  3. Final Answer:

    To call multiple methods with a single delegate invocation -> Option A
  4. Quick Check:

    Multicast delegates call many methods [OK]
Hint: Multicast delegates call many methods at once [OK]
Common Mistakes:
  • Thinking multicast delegates return multiple values
  • Confusing with single method delegates
  • Assuming multicast delegates prevent repeated calls
2. Which syntax correctly adds a method named ShowMessage to a multicast delegate del?
easy
A. del += ShowMessage;
B. del -+ ShowMessage;
C. del =+ ShowMessage;
D. del = ShowMessage;

Solution

  1. Step 1: Recall delegate addition syntax

    To add a method to a multicast delegate, use the '+=' operator.
  2. Step 2: Check each option

    del += ShowMessage; uses 'del += ShowMessage;' which is correct syntax to add a method.
  3. Final Answer:

    del += ShowMessage; -> Option A
  4. Quick Check:

    Use '+=' to add methods to multicast delegates [OK]
Hint: Use '+=' to add methods to multicast delegates [OK]
Common Mistakes:
  • Using '=' instead of '+=' to add methods
  • Typing operators incorrectly like '=+' or '-+'
  • Confusing removal syntax with addition
3. What will be the output of the following code?
delegate void Notify();
class Program {
  static void A() => Console.WriteLine("A called");
  static void B() => Console.WriteLine("B called");
  static void Main() {
    Notify del = A;
    del += B;
    del();
  }
}
medium
A. No output
B. B called A called
C. A called
D. A called B called

Solution

  1. Step 1: Understand delegate invocation order

    Methods added to a multicast delegate are called in the order they were added.
  2. Step 2: Trace the code execution

    First, method A is assigned, then method B is added. Calling del() invokes A then B.
  3. Final Answer:

    A called B called -> Option D
  4. Quick Check:

    Multicast delegates call methods in added order [OK]
Hint: Methods run in order added to delegate [OK]
Common Mistakes:
  • Assuming reverse order of method calls
  • Expecting only the last method to run
  • Thinking no output occurs without explicit loop
4. Identify the error in this code snippet:
delegate void Notify();
class Program {
  static void A() => Console.WriteLine("A called");
  static void Main() {
    Notify del = A;
    del -= A;
    del();
  }
}
medium
A. Syntax error in delegate declaration
B. del is null when invoked, causing a runtime error
C. Cannot remove method from delegate
D. No error, output is 'A called'

Solution

  1. Step 1: Analyze delegate removal

    Removing the only method from the delegate leaves it null.
  2. Step 2: Check invocation after removal

    Calling del() when del is null causes a NullReferenceException at runtime.
  3. Final Answer:

    del is null when invoked, causing a runtime error -> Option B
  4. Quick Check:

    Removing last method makes delegate null [OK]
Hint: Removing last method makes delegate null, check before calling [OK]
Common Mistakes:
  • Assuming delegate still holds method after removal
  • Ignoring null check before invoking delegate
  • Thinking removal causes syntax error
5. You want to create a multicast delegate that calls three methods: LogStart, ProcessData, and LogEnd. Which code correctly sets up and invokes this delegate?
hard
A. Notify del; del = LogStart; del = ProcessData; del = LogEnd; del();
B. Notify del = LogStart + ProcessData + LogEnd; del();
C. Notify del = LogStart; del += ProcessData; del += LogEnd; del();
D. Notify del = LogStart; del -= ProcessData; del += LogEnd; del();

Solution

  1. Step 1: Understand delegate combination

    Use '+=' to add methods to a multicast delegate one by one.
  2. Step 2: Evaluate each option

    Notify del = LogStart; del += ProcessData; del += LogEnd; del(); correctly initializes with LogStart, then adds ProcessData and LogEnd, then calls del().
  3. Final Answer:

    Notify del = LogStart; del += ProcessData; del += LogEnd; del(); -> Option C
  4. Quick Check:

    Use '+=' repeatedly to build multicast delegate [OK]
Hint: Add methods one by one with '+=' to build multicast delegate [OK]
Common Mistakes:
  • Using '+' operator directly without delegate type
  • Overwriting delegate instead of adding methods
  • Removing methods unintentionally before calling
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard