Delegate is type
safe function pointer.
Function pointer: points/holds referernce
to a method.
Type safe: return type and signature of method must be
same as signature and return type of method else you will get compilation error.
Syntax: Very
much similar to the method with the delegate keyword.
It is similar to a
class, we need to create instance of it and pass in the function name to the
delegate constructor and this is the function the delegate will point to.
It calls the method
indirectly via a pointer.
It is
representative to communicate between two parties.
When you want to
pass function as parameter to another funtion than think of delegates.
Main use of
delegates in c# is Callbacks & communication between two parties.
Examples:
Example1: Suppose we have report class and in that we
have download report method. At real time you want to know the percentage of
report downloaded, so in that case we can make use of delegates as below,
class Program
{
static void Main(string[] args)
{
// holds reference to function.
Report.DownloadReport(ReportDownloadStatus);
}
// callback function which you want to call using delegates.
static void ReportDownloadStatus(int i)
{
Console.WriteLine(i);
}
}
public class Report
{
//declare delegate
public delegate void PercentageCompleted(int i);
// delegate passed as a function parameter
public static void DownloadReport(PercentageCompleted percentageCompleted)
{
// Gathering and printing data
for (int i = 0; i <= 100; i++)
{
percentageCompleted(i);
}
Console.WriteLine("Report Downloaded completly.");
}
}
Example2: Calling content page method
from master page method / Click events.
Masterpage.cs
protected void Button1_Click(object sender, EventArgs e)
{
if (contentCallEvent != null)
contentCallEvent(this, EventArgs.Empty);
}
public event EventHandler contentCallEvent;
Contentpage.cs
protected void Page_PreInit(object sender, EventArgs e)
{
//
Create an event handler for the master page's contentCallEvent event
Master.contentCallEvent += new EventHandler(PrintData);
}
private void PrintData(object sender, EventArgs e)
{
// This
Method will be Called.
lbl.Text = "Delegates";
}
ContentPage.ascx.cs
<%@ MasterType VirtualPath="~/Site.Master" %>
Dear Reader, please give suggestion on it, or let me know if you have good examples for delegates.
its better provide some more information,
ReplyDeleteany way nice work
[Thanks]
Regards
Dotnet Begineers
https://allittechnologies.blogspot.in