Saturday, June 13, 2026

C# Examples of Different approaches for Delegate Initialization

There are four ways to initialize a delegate:
  1. Custom delegate initialized using Method Group Conversion
  2. Custom delegate initialized using Method Group Conversion with short hand syntax
  3. Custom delegate initialized using Anonymous Method
  4. Built-in delegate e.g. Func, Action initialized using Lambda Expression
Example is given for all these 4 ways in following code:

Step1. Declare delegate and methods which can be invoked using delegate object
// declare delegate
public delegate int CalculateDel(int number1, int number2);
static class Calculation
{
    public static int Sum(int number1, int number2)
    {
        return number1 + number2;
    }

    public static int Product(int number1, int number2)
    {
        return number1 * number2;
    }
}
Step2. Use the client Program class to Initialize and invoke delegates
class Program
{
    static void Main(string[] args)
    {
        // 1st Approach: Custom delegate, Method Group Conversion:-
        CalculateDel sum1 = new CalculateDel(Calculation.Sum);
        // 2nd Approach: Custom delegate, Method Group Conversion:- (short hand syntax)
        CalculateDel sum2 = Calculation.Sum;
        // 3rd Approach: Anonymous Method:-
        CalculateDel sum3 = delegate (int number1, int number2)
       {
           return number1 + number2;
       };
        //4th Approach: Built-in delegate, Lambda Expression
        Func<int, int, int> sum4 = (x, y) => (x + y);

        // delegate invocation
        int result1 = Calculation.Product(sum1(2, 5), 10);
        int result2 = Calculation.Product(sum2(2, 5), 10);
        int result3 = Calculation.Product(sum3(2, 5), 10);
        int result4 = Calculation.Product(sum4(2, 5), 10);

        Console.WriteLine("Approach 1 Result is " + result1);
        Console.WriteLine("Approach 2 Result is " + result2);
        Console.WriteLine("Approach 3 Result is " + result3);
        Console.WriteLine("Approach 4 Result is " + result4);
        Console.ReadLine();
    }
}

Related Posts

No comments:

Post a Comment

Hot Topics