Home > DeveloperSection > Articles > Delegate in C#

Delegate in C#


C# C# 
Ratings:
0 Comment(s)
 3095  View(s)
Rate this:

Delegate in C#

So what is delegate?

Basically it is similar like the old "C" age function pointer, where functions can be assigned like a variable and called in the run time based on dynamic conditions. C# delegate is the smarter version of function pointer which helps software architects a lot, especially while utilizing design patterns.

At first, a delegate is defined with a specific signature (return type, parameter type and order etc). To invoke a delegate object, one or more methods are required with the EXACT same signature. A delegate object is first created similar like a class object created. The delegate object will basically hold a reference of a function. The function will then can be called via the delegate object.

Sounds easy? If not let’s have a look in the code snippets below.

 1. Defining the delegate

 

public delegate int Calculate (int value1, int value2);

 2. Creating methods which will be assigned to delegate object

 

//a method, that will be assigned to delegate objects
//having the EXACT signature of the delegate
public int add(int value1, int value2)
{
    return value1 + value2;           
}
//a method, that will be assigned to delegate objects
//having the EXACT signature of the delegate
public int sub( int value1, int value2)
{
    return value1 - value2;           
}

 3. Creating the delegate object and assigning methods to those delegate objects

 

//creating the class which contains the methods
//that will be assigned to delegate objects
MyClass
mc = new MyClass();

//creating delegate objects and assigning appropriate methods
//having the EXACT signature of the delegate
Calculate add = new Calculate(mc.add);
Calculate sub = new Calculate(mc.sub);

 4. Calling the methods via delegate objects

 

//using the delegate objects to call the assigned methods
Console
.WriteLine("Adding two values: " + add(10, 6));
Console.WriteLine("Subtracting two values: " + sub(10,4));

 

Pretty simple, huh? Happy coding!!

 


Don't want to miss updates? Please click the below button!

Follow MindStick