What is Delegate in C#?

C# delegates are pointers to functions or methods. A delegate is a reference type variable that holds the reference to a method. The reference can be changed at the runtime. Delegates are especially used for implementing events and the call-back methods. All the delegates are implicitly derived from the System.Delegate class.

Simple Delegate Example:

public class WebTools

{
//Declare Delegate

public delegate int PointerToAddFunction(int i, int y);

private int Add(int i, int y)

{

return i + y;

}

}

protected void btnPreview_Click(object sender, EventArgs e)

{

// Create Delegate Reference

PointeToAddFunction myptr = null;

// Point the reference to the add method

myptr = this.Add;

// Invoke the method through delegate object

Label_Result.Text = myptr.Invoke(20, 10).ToString();

}