A delegate variable stores a callable method with a matching signature.

delegate A delegate type describes a method shape that can be stored and called.

Delegate Variables

input
DelegateVariables.cs
Replay: real traced execution (multi-file project)
using System;

delegate int IntOperation(int value);

class Program
{
    static int Double(int value)
    {
        return value * 2;
    }

    static void Main()
    {
        int input = 6;
        IntOperation operation = Double;
        int result = operation(input);

        Console.WriteLine($"input={input}");
        Console.WriteLine($"result={result}");
    }
}
using System;

delegate int IntOperation(int value);

class Program
{
    static int Double(int value)
    {
        return value * 2;
    }

    static void Main()
    {
        int input = 3;
        IntOperation operation = Double;
        int result = operation(input);

        Console.WriteLine($"input={input}");
        Console.WriteLine($"result={result}");
    }
}
using System;

delegate int IntOperation(int value);

class Program
{
    static int Double(int value)
    {
        return value * 2;
    }

    static void Main()
    {
        int input = 9;
        IntOperation operation = Double;
        int result = operation(input);

        Console.WriteLine($"input={input}");
        Console.WriteLine($"result={result}");
    }
}
  1. input ← 6, operation ← IntOperation

    12static void Main()13{14    int input→ 6 = 6; //@input=3, 915    IntOperation operation→ IntOperation = Double;16    int result = operation(input6);
  2. static int Double(int value)

    6{7    static int Double(int value6)8    {9        return value6 * 2;10    }
  3. result ← 12

    15    IntOperation operation = Double;16    int result→ 12 = operation(input6);1718    Console.WriteLine($"input={input6}");19    Console.WriteLine($"result={result12}");20}
    outputinput=6
    result=12
  1. input ← 3, operation ← IntOperation

    12static void Main()13{14    int input→ 3 = 3;15    IntOperation operation→ IntOperation = Double;16    int result = operation(input3);
  2. static int Double(int value)

    6{7    static int Double(int value3)8    {9        return value3 * 2;10    }
  3. result ← 6

    15    IntOperation operation = Double;16    int result→ 6 = operation(input3);1718    Console.WriteLine($"input={input3}");19    Console.WriteLine($"result={result6}");20}
    outputinput=3
    result=6
  1. input ← 9, operation ← IntOperation

    12static void Main()13{14    int input→ 9 = 9;15    IntOperation operation→ IntOperation = Double;16    int result = operation(input9);
  2. static int Double(int value)

    6{7    static int Double(int value9)8    {9        return value9 * 2;10    }
  3. result ← 18

    15    IntOperation operation = Double;16    int result→ 18 = operation(input9);1718    Console.WriteLine($"input={input9}");19    Console.WriteLine($"result={result18}");20}
    outputinput=9
    result=18