Delegates in C# Programming


A delegate in C# is a type-safe object that points to a method. Delegates allow methods to be passed as parameters and are used to implement event handling and callback methods.

1. Declaring and Using Delegates

To use a delegate, you need to declare it, assign a method to it, and invoke the method through the delegate.

Step-by-Step Example: Declaring and Using Delegates

    using System;
   // Declare a delegate
    delegate void DisplayMessage(string message);
   class Program {
        // Method to be assigned to the delegate
        static void ShowMessage(string message) {
            Console.WriteLine("Message: " + message);
        }
       static void Main() {
            // Instantiate the delegate
            DisplayMessage display = ShowMessage;
           // Call the method using the delegate
            display("Hello, Delegates!");
        }
    }
        

Output:

Message: Hello, Delegates!

2. Multicast Delegates

A multicast delegate can point to multiple methods. When invoked, it calls all the methods in its invocation list in order.

Step-by-Step Example: Multicast Delegates

    using System;
   // Declare a delegate
    delegate void Notify(string message);
   class Program {
        // Methods to be assigned to the delegate
        static void NotifyByEmail(string message) {
            Console.WriteLine("Email notification: " + message);
        }
       static void NotifyBySMS(string message) {
            Console.WriteLine("SMS notification: " + message);
        }
       static void Main() {
            // Instantiate the delegate
            Notify notify = NotifyByEmail;
           // Add another method to the delegate
            notify += NotifyBySMS;
           // Call the methods using the multicast delegate
            notify("Your order has been shipped!");
           // Remove a method from the delegate
            notify -= NotifyByEmail;
           // Call the remaining method
            notify("Your order is out for delivery!");
        }
    }
        

Output:

Email notification: Your order has been shipped!
SMS notification: Your order has been shipped!
SMS notification: Your order is out for delivery!

Key Points

  • Delegates provide flexibility and reusability by allowing methods to be passed as parameters.
  • Multicast delegates enable multiple methods to be executed with a single delegate invocation.
  • Delegates are commonly used in event handling and asynchronous programming.

Conclusion

Delegates in C# are powerful tools for implementing callback functions and event-driven programming. By mastering delegates and multicast delegates, you can write more flexible and modular code.




Advertisement