Delegate is a reference type that holds the reference of a class method. Any method which has the same signature as delegate can be assigned to delegate. It is very similar to the function pointer but with a difference that delegates are a type-safe. We can say that it is the object-oriented implementation of function pointers.
There are three steps for defining and using delegates:
1.
Declaration
A delegate is
declared by using the keyword delegate, otherwise it resembles a method
declaration.
2.
Instantiation
To create a
delegate instance, we need to assign a method (which has same signature as
delegate) to delegate.
3.
Invocation
Invoking a delegate is like
as invoking a regular method.
Types
of delegates
1.
Single cast delegate
A single cast
delegate holds the reference of only single method. In previous example,
created delegate is a single cast delegate.
2.
Multi cast delegate
A delegate
which holds the reference of more than one method is called multi-cast
delegate. A multicast delegate only contains the reference of methods which
return type is void. The + and += operators are used to combine delegate
instances. Multicast delegates are considered equal if they reference the same
methods in the same order.
1. Single cast delegate Example:
Step- New Project ->New Console Application-> Write code
using System;
namespace Delegate_example
{
//Declaration
public delegate int mydelegate(int a, int b);//delegates having same signature as method
public class del
{
public int Sum(int a, int b)
{
return a + b;
}
public int Sub(int a, int b)
{
return a - b;
}
}
class Program
{
static void Main(string[] args)
{
del o = new del();
// Instantiation : As a single cast delegate
mydelegate sum = new mydelegate(o.Sum);
mydelegate sub = new mydelegate(o.Sub);
//Invocation
Console.WriteLine("Sum Of The Two Number"+sum(20,10));
Console.WriteLine("Sub of the two number"+sub(20,10));
Console.ReadLine();
}
}
}
2. Multi cast delegate Example
using System;
namespace multicast_delegate
{
public delegate void MyDelegate(int a,int b);
class Example
{
public void Sum(int a,int b)
{
Console.WriteLine("Sum Of The Number "+(a+b));
}
public void Sub(int a, int b)
{
Console.WriteLine("Sub Of The Number " +(a-b));
}
}
class Program
{
static void Main(string[] args)
{
Example ob = new Example();
MyDelegate multicast = new MyDelegate(ob.Sum);
multicast += new MyDelegate(ob.Sub);
multicast(50,10);
}
}
}
2. Multi cast delegate Another Example Using Asp.net
using System;
public partial class _Default : System.Web.UI.Page
{
public delegate void mydele(int a,int b);
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
mydele ob = Sum;
ob += Sub;
ob += Mul;
ob += Div;
ob.Invoke(int.Parse(TextBox1.Text),int.Parse(TextBox2.Text));
}
public void Sum(int a,int b)
{
Label1.Text = (a + b).ToString();
}
public void Sub(int a, int b)
{
Label2.Text = (a - b).ToString();
}
public void Mul(int a, int b)
{
Label3.Text = (a *b).ToString();
}
public void Div(int a, int b)
{
Label4.Text = (a /b).ToString();
}
}
No comments:
Post a Comment