If you are learning C# programming, one of the most powerful and flexible features you’ll encounter is the delegate. Delegates in C# are widely used in event handling, callbacks, and LINQ—making them an essential concept for every developer.
What is a Delegate in C#?
A delegate in C# is a type-safe object that can reference a method. In simple words, it works like a pointer to a function. This means you can pass methods as parameters to other methods, making your code more flexible and reusable.
Think of a delegate as a contract: if a method’s signature matches the delegate’s signature, that method can be assigned to the delegate.
Syntax of Delegate in C#
// Declaring a delegate
public delegate void MyDelegate(string message);
// Using the delegate
class Program
{
static void ShowMessage(string msg)
{
Console.WriteLine(msg);
}
static void Main()
{
MyDelegate del = ShowMessage;
del("Hello, Delegates in C#!");
}
}
Output:
Hello, Delegates in C#!
Why Use Delegates in C#?
Delegates provide several advantages in .NET development:
- Flexibility: Pass methods as arguments to other methods.
- Event Handling: Widely used in GUI applications and ASP.NET.
- Reusability: Write cleaner and more maintainable code.
- Type-Safe: Ensures the assigned method has the correct return type and parameters.
Types of Delegates in C#
- Single-cast Delegate – Holds a reference to one method.
- Multicast Delegate – Can hold references to multiple methods.
- Generic Delegate (Func, Action, Predicate) – Built-in delegates for quick use.
Example of a multicast delegate:
public delegate void PrintMessage(string msg);
class Program
{
static void Greet(string name) => Console.WriteLine("Hello, " + name);
static void Farewell(string name) => Console.WriteLine("Goodbye, " + name);
static void Main()
{
PrintMessage del = Greet;
del += Farewell;
del("John");
}
}
Output:
Hello, John
Goodbye, John
Final Thoughts
Delegates in C# are the foundation of events, lambda expressions, and LINQ queries. Mastering them will make you a stronger C# developer, capable of writing clean, efficient, and scalable code.
If you’re diving deeper into C# tutorials or preparing for .NET interviews, make sure you have a solid grasp of delegates and their real-world applications.

