Understanding Delegates in C# - CodeProject®
Understanding Delegates in C# - CodeProject®
http://www.codeproject.com/KB/cs/Delegates_in_C_.aspx?display=Print
Understanding Delegates in C#
By Arul Nayagam C | 16 Sep 2005
C# Windows .NET Visual-Studio Dev WinForms Intermediate
Introduction
Delegate is like a buzz word in C#.NET programming. In this article, I explain delegates, multicast delegates and their usage with the help of simple C# programs.
What is a Delegate?
Delegate is a type which holds the method(s) reference in an object. It is also referred to as a type safe function pointer.
Advantages
Encapsulating the method's call from caller Effective use of delegate improves the performance of application Used to call a method asynchronously
Declaration
public delegate type_of_delegate delegate_name()
Example:
public delegate int mydelegate(int delvar1,int delvar2)
Note
You can use delegates without parameters or with parameter list You should follow the same syntax as in the method (If you are referring to the method with two int parameters and int return type, the delegate which you are declaring should be in the same format. This is why it is referred to as type safe function pointer.)
1 of 3
12/27/2011 10:12 AM
http://www.codeproject.com/KB/cs/Delegates_in_C_.aspx?display=Print
{ //Creating the Delegate Instance Delegate_Prod delObj = new Delegate_Prod(fn_Prodvalues); Console.Write("Please Enter Values"); int v1 = Int32.Parse(Console.ReadLine()); int v2 = Int32.Parse(Console.ReadLine()); //use a delegate for processing double res = delObj(v1,v2); Console.WriteLine ("Result :"+res); Console.ReadLine(); } }
Explanation
Here I have used a small program which demonstrates the use of delegate. The delegate "Delegate_Prod" is declared with double return type and accepts only two integer parameters. Inside the class, the method named fn_Prodvalues is defined with double return type and two integer parameters. (The delegate and method have the same signature and parameter type.) Inside the Main method, the delegate instance is created and the function name is passed to the delegate instance as follows:
Delegate_Prod delObj = new Delegate_Prod(fn_Prodvalues);
After this, we are accepting the two values from the user and passing those values to the delegate as we do using method:
delObj(v1,v2);
Here delegate object encapsulates the method functionalities and returns the result as we specified in the method.
Multicast Delegate
What is Multicast Delegate?
It is a delegate which holds the reference of more than one method. Multicast delegates must contain only methods that return void, else there is a run-time exception.
2 of 3
12/27/2011 10:12 AM
http://www.codeproject.com/KB/cs/Delegates_in_C_.aspx?display=Print
func += new Delegate_Multicast(Method2); func(1,2); // Method1 and Method2 are called func -= new Delegate_Multicast(Method1); func(2,3); // Only Method2 is called } }
Explanation
In the above example, you can see that two methods are defined named method1 and method2 which take two integer parameters and return type as void. In the main method, the Delegate object is created using the following statement:
Delegate_Multicast func = new Delegate_Multicast(Method1);
Then the Delegate is added using the += operator and removed using the -= operator.
Conclusion
This article would help to understand delegates in C# using simple examples. If you have any query regarding this article, you can reach me at [email protected].
History
16th September, 2005: Initial post
License
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)
Working as a Software Engineer in a MNC Company.Knowledge on C#.NET, ASP.NET, VB.NET ,VB & SQL Server.
3 of 3
12/27/2011 10:12 AM