Multicast Delegates
A multicast delegate has a linked list of delegates, called an invocation list, consisting one or more elements. When a multicast delegate is invoked, the delegates in the invocation list are called synchronously in the order which they appear of. An error occurs during execution of the list then on exception is thrown.
using System;
namespace AStepAhead.MulticastDelegate
{
public delegate void DelString(string str);
public class MulticastDelegate
{
public static void firstMethod(string x)
{
Console.WriteLine("It prints using first method.\nYou have entered:{0}", x);
}
public static void secondMethod(string y)
{
Console.WriteLine("\nIt prints using second method.\nYou have entered:{0}", y);
}
public static void thirdMethod(string z)
{
Console.WriteLine("\nIt prints using third method.\nYou have entered:{0}", z);
}
static void Main(string[] args)
{
Console.Clear();
Console.Write("Enter string : ");
string str = Console.ReadLine();
DelString myMultiDel1, myMultiDel2, myMultiDel3, myMultiDel4, myMultiDel5;
//Firs call method individually
myMultiDel1 = new DelString(firstMethod);
myMultiDel1(str);
Console.ReadLine();
myMultiDel2 = new DelString(secondMethod);
myMultiDel2(str);
Console.ReadLine();
myMultiDel3 = new DelString(thirdMethod);
myMultiDel3(str);
//Combine two delegates or multicast
Console.WriteLine("\nThis all using Multicast delegates\n");
myMultiDel4 = myMultiDel1 + myMultiDel2 + myMultiDel3;
myMultiDel4(str);
//another way to multicast
Console.WriteLine("\nThis all using Multicast delegates showing another way of multicasting\n");
myMultiDel5 = new DelString(firstMethod);
//multicasting or combining / attaching
myMultiDel5 += new DelString(thirdMethod);
myMultiDel5(str);
//deattaching
myMultiDel5 -= new DelString(firstMethod);
myMultiDel5(str);
Console.ReadLine();
}
}
}
Anonymous method
In Anonymous method, we can write the entire code-block of a method within delegate like a parameter. It eliminates the need to create a separate method.
The Scope of the parameters of an anonymous method is in the anonymous method-block only. In an anonymous method, the use of jump statements like goto, break or continue are not allowed whose target is outside the anonymous method block. It cannot access the ‘ref’ or ‘out’ parameters of an outer scope. Moreover, no unsafe code can be accessed within the anonymous method block.
using System;
namespace AstepAhead.anonymousmethod
{
public class delegateClass
{
public delegate void delegateAdd(int x, int y);
public static void Main()
{
delegatelass mydelcls = new delegateAdd();
mydelcls.delAdd mydellAdd = new mydelcls.delAdd(int a, int b)
{
Cosole.WrieLine(“Sum of {0}, {1} = {2}”, a,b, b+a);
}; //anonymous block
Console.WriteLine(“Enter first number : “);
Int num1= int.parse(Console.ReadLine());
Console.WriteLine(“Enter second number : “);
Int num2= int.parse(Console.ReadLine());
//Invoke named method
myAddDel(num1, num2);
Console.ReadLine();
}
}
|
Comments
Post a Comment