************************Посмотреть*****************************

public delegate int ArithmeticOperation(int x,int y);
class Calculator
{
    public ArithmeticOperation PlusFunction()
    {
        ArithmeticOperation func = delegate(int x, int y) { return x + y; };
        return func;
    }
    public ArithmeticOperation MinusFunction()
    {
        ArithmeticOperation func = delegate(int x, int y) { return x - y; };
        return func;
    }
}

////////////////////////////////////////////////////////////////////////////////

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        button1.Click += delegate { MessageBox.Show("example"); };
        Calculator calculator = new Calculator();
        ArithmeticOperation func = calculator.PlusFunction();
        int result = func(5, 5);
        MessageBox.Show(result.ToString());
    }
}

***************************Next********************************

class Calculator
{
    public Func<int, int, int> PlusFunction()
    {
        Func<int,int,int> func = delegate(int x, int y) { return x + y; };
        return func;
    }
    public Func<int, int, int> MinusFunction()
    {
        Func<int, int, int> func = delegate(int x, int y) { return x - y; };
        return func;
    }
}

////////////////////////////////////////////////////////////////////////////////

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        button1.Click += delegate { MessageBox.Show("example"); };
        Calculator calculator = new Calculator();
        Func<int, int, int> func = calculator.PlusFunction();
        int result = func(3, 5);
        MessageBox.Show(result.ToString());
    }
}

***************************Next********************************

class Calculator
{
    public Func<int, int, int> PlusFunction()
    {
        Func<int,int,int> func = (x, y)=> x + y;
        return func;
    }
    public Func<int, int, int> MinusFunction()
    {
        Func<int, int, int> func = (x, y) => x - y;
        return func;
    }
}

////////////////////////////////////////////////////////////////////////////////

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        button1.Click += delegate { MessageBox.Show("example"); };

        Func<int, int, int> func = (x,y)=>x-y;
        Func<int, Func<int, int, int>, int> func2 = (k, f) => f(2, 3) * k;
        int result = func2(5, func);
        MessageBox.Show(result.ToString());
    }
}