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

Delegate Variables

DelegateVariables.cs
using System;

delegate int IntOperation(int value);

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

    static void Main()
    {
        int input = ;
        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 = ;
        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 = ;
        IntOperation operation = Double;
        int result = operation(input);

        Console.WriteLine($"input={input}");
        Console.WriteLine($"result={result}");
    }
}
delegate A delegate type describes a method shape that can be stored and called.