Hi!
Today's C# topic, Delegates, is very interesting. Some say, it’s very complex. I hope you have worked on delegate and know about it. However, for freshers, it is a very complex topic. So, I am going to explain it in a simple way. I hope, after that, you will get the basic idea of delegate and love to use delegates in your project.
What is Delegate?
If you have got a chance to work with C++, then you definitely know about function pointer in C++.
Delegate is just like the function pointer in C#, but delegates are type safe. Delegate is an object that points to another method either static or instance. It takes arguments and returns value. It takes reference to other methods. We can invoke or call the method through the delegate object.
Points to remember regarding Delegate
What is Delegate?
If you have got a chance to work with C++, then you definitely know about function pointer in C++.
Delegate is just like the function pointer in C#, but delegates are type safe. Delegate is an object that points to another method either static or instance. It takes arguments and returns value. It takes reference to other methods. We can invoke or call the method through the delegate object.
Points to remember regarding Delegate
- Using Delegates, we can pass methods and parameters.
- Using Delegates, we can define callback methods.
- We can call multiple methods on a single call using Delegate.
To use Delegate, there are only four steps -
- Declare a delegate type.
- Create or find a method which has same type of delegate.
- Create object/instance of Delegate.
- And at last, Invoke Delegate object.
Declare a Delegate type
First step to start with delegate is to declare the delegate type. The “delegate” keyword is used to define a delegate type.
- //Declare a Delegate
- delegate int DotnetTutorialDelegate(int x, int y, int z);
- //Declare a Generic Delegate
- public delegate T Add<T>(T x, T y, T z);
To use delegate, you have methods or to create methods which have same signature of delegate. We can use instance and static methods with delegate.
Create instance of Delegate
- //For simple delegate
- DotnetTutorialDelegate objDelegate1 = new DotnetTutorialDelegate(DelegateExample.Average);
- //For Generic type delegate
- Add<double> objDoubleTypeDelegate = GenericDelegateExample.AddDouble;
- //First Way to call delegate
- Console.WriteLine("value is " + objDelegate1.Invoke(3, 8, 9));
- //Second Way to call delegate
- Console.WriteLine("value is " + objDelegate1(3, 4, 5));

Join the conversation! Your thoughts help the community grow.