How to declare and instantiate Delegates in C#?

C# delegates are similar to pointers to functions, in C or C++. A delegate is a reference type variable that holds the reference to a method. The reference can be changed at runtime.

Syntax for declaring Delegates −

delegate <return type> <delegate-name> <parameter list>

Let us now see how to instantiate delegates in C#.

Once a delegate type is declared, a delegate object must be created with the new keyword and be associated with a particular method. When creating a delegate, the argument passed to the new expression is written similar to a method call, but without the arguments to the method.

public delegate void printString(string s);
printString ps1 = new printString(WriteToScreen);
printString ps2 = new printString(WriteToFile);

The following is an example to declare and instantiate delegates in C# −


 Live Demo

using System;

delegate int NumberChanger(int n);
namespace DelegateAppl {

   class TestDelegate {
      static int num = 10;

      public static int AddNum(int p) {
         num += p;
         return num;

      public static int MultNum(int q) {
         num *= q;
         return num;

      public static int getNum() {
         return num;

      static void Main(string[] args) {
         //create delegate instances
         NumberChanger nc1 = new NumberChanger(AddNum);
         NumberChanger nc2 = new NumberChanger(MultNum);

         //calling the methods using the delegate objects
         Console.WriteLine("Value of Num: {0}", getNum());
         Console.WriteLine("Value of Num: {0}", getNum());


Value of Num: 35
Value of Num: 175
Samual Sam
Samual Sam

Learning faster. Every day.