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!!
|