ARTICLE

Understanding Delegates in C#

Posted by Arul Chinnappan Articles | Visual C# September 15, 2005
Delegate is type which holds the method(s) reference in an object. It is also reffered as a type safe function pointers.
Reader Level:

Delegate in C#

Definition:

Delegate is type which  holds the method(s) reference in an object. It is also reffered as a type safe function pointers.

Advantages:

  • Encapsulating the method's call from caller.
  • Effective use of Delegat 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 delegeate without parameter or with parameter list.
  • you should follow the same syntax as in the method.

(if you are reffering the method with two int parameters and int return type the delegate which you are declaring should be the same format.This is how it is reffered as type safe function pointer)

Sample Program using Delegate :

public delegate double Delegate_Prod(int a,int b);

 class Class1
 {
  

  static double fn_Prodvalues(int val1,int val2)
      {
     return val1*val2;
      }
  static void Main(string[] args)
  {
   

   //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 which accepts only two interger parameters.

Inside the Class the method named fn_Prodvalues is defined with double return type and two integer parameters.(The delegate and method is having the same signature and
parameters type)

Inside the Main method the delegate instance is created and the function name is passed to the delegae instace as following.

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 return the result as we specified in the method.

Multicast Delegate

It is a Delegate which holds the reference of more than one methods.

Multicast delegates must contain only methods that return void, else there is a run-time exception.

Simple Program using Multicast Delegate

delegate void Delegate_Multicast(int x, int y);

Class Class2

{
static void Method1(int x, int y) {
  Console.WriteLine("You r in Method 1");
}
static void Method2(int x, int y) {
  Console.WriteLine("You r in Method 2");
}
public static void Main()
{
  Delegate_Multicast func = new Delegate_Multicast(Method1);

  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 whchi takes 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 -= operator.

Conclusion.

This article would help you understand the Delegates in C# .  

Login to add your contents and source code to this article
post comment
     

Really it's very nice and Easy to understand thanq..........

Posted by suresh kumar Feb 27, 2013

Author simplified the concepts and is successful in explaining them. Keep good work man, I am difinite that many people will benefit from this, including me.

Posted by venkatesulu Jun 24, 2011

Thank you. I am completely understand delegate to read this article. keep writing such kind of Article so every on can read it Once again thanks

Posted by Naren Chejara Mar 22, 2011

Really Nice one and Simple Helped me

Posted by Bharadwa Hiren Jan 28, 2011

Very nice article.I learnt what i wanted in delegate.First time i understood what is delegate and multicast delgate.

Posted by Chetan Rao May 26, 2010
COMMENT USING
PREMIUM SPONSORS
DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and add new content to existing PDF documents from within your applications.
Get Career Advice from Experts
SPONSORED BY
  • PDF reports have never been easier to create. With our included WYSIWYG Designer, you can layout your reports, set up your data source and let DynamicPDF ReportWriter do the rest.
Join a Chapter