Search notes:

C# - operator delegate

Simple example

using System;

internal delegate double funcPtr(double a, double b);

internal class funcs {

   public static double add (double a, double b) { return a + b; }
   public static double mult(double a, double b) { return a * b; }
   public static double sub (double a, double b) { return a - b; }
   public static double div (double a, double b) { return a / b; }

}

internal class nTimes {

   private double n_;

   public nTimes(double n) { n_ = n; }

   public double add (double a, double b) { return n_ * (a + b); }
   public double mult(double a, double b) { return n_ * (a * b); }
   public double sub (double a, double b) { return n_ * (a - b); }
   public double div (double a, double b) { return n_ * (a / b); }

}


public class SamplesDelegate  {

   private static void callFunc(funcPtr f) {
      double result = f(42, 5);
      Console.WriteLine(result);
   }

   public static void Main()  {

      funcPtr fAdd  = new funcPtr(funcs.add );
      funcPtr fMult = new funcPtr(funcs.mult);
      funcPtr fDiv  = new funcPtr(funcs.div );
      funcPtr fSub  = new funcPtr(funcs.sub );

      callFunc(fAdd );
      callFunc(fMult);
      callFunc(fDiv );
      callFunc(fSub );

      nTimes nTimes_3 = new nTimes(3);
      nTimes nTimes_5 = new nTimes(5);
      nTimes nTimes_7 = new nTimes(7);
      nTimes nTimes_9 = new nTimes(9);

      funcPtr fAdd_n  = new funcPtr(nTimes_3.add );
      funcPtr fMult_n = new funcPtr(nTimes_5.mult);
      funcPtr fDiv_n  = new funcPtr(nTimes_7.div );
      funcPtr fSub_n  = new funcPtr(nTimes_9.sub );
      
      callFunc(fAdd_n );
      callFunc(fMult_n);
      callFunc(fDiv_n );
      callFunc(fSub_n );

   }
}
Github repository about-C-Sharp, path: /language/operators/delegate/simple.cs

See also

The delegate operator might be used in WinAPI callbacks, such as EnumWindows.
This example tries to demonstrate how a delegate can be used in PowerShell.
The classes

Index