Delegates – It is a type that holds the reference of method in an object. It’s also called type safe (It ensure that operation is working on right kind of data) function pointer.
Adv – Encapsulating the method call from caller
Effective use of delegate improve the performance
Use to call method asynchronously.
Declare Delegate ->Public Delegate int delegate_name(Param optional)
Multicast Delegate – holds the reference of more than one method. Must contain the methods return void.
How to use
Single Delegate
private delegate void d_Print(string strPrint);
private delegate int d_Add(int fNum, int sNum);
static void Main(string[] args)
{
//Simple Use of Delegate
d_Print print = PrintString;
print("Hello");
//Pass Delegate as parameter
PrintHelper(PrintString, "Hello");
//Delegate With return value
d_Add add = AddTwoNumbers;
Console.Write(add(4, 5));
}
private static void PrintString(string strPrint)
{
Console.Write(strPrint);
}
//Pass delegate as parameter
private static void PrintHelper(d_Print dP, string strPrint)
{
dP(strPrint);
}
//Add two numbers
private static int AddTwoNumbers(int num1, int num2)
{ return num1 + num2; }
Multicast Delegate
private delegate int d_ArithmeticOpr(int fNum, int sNum);
static void Main(string[] args)
{
//Use of multicast Delegate
d_ArithmeticOpr math = new d_ArithmeticOpr(AddTwoNumbers);
//Add Subtract Method to delegate object
math += new d_ArithmeticOpr(SubtractNumber);
//This call will do both Addition and Subtraction
Console.Write(math(20, 10));
//remove Add call from delegate
math -= new d_ArithmeticOpr(AddTwoNumbers);
//This call only do the Subtraction
Console.Write(math(20, 10));
}
//Subtract Two Numbers
private static int SubtractNumber(int num1, int num2)
{
return (num1-num2);
}
//Add two numbers
private static int AddTwoNumbers(int num1, int num2)
{ return num1 + num2; }
No comments:
Post a Comment