Вот простой код приложения консоли, который возвращает результат, который я не понимаю полностью.
Попробуйте подумать, выводит ли он 0, 1 или 2 в консоли:
using System;
namespace ConsoleApplication
{
    class Program
    {
        static void Main()
        {
            int i = 0;
            i += Increment(ref i);
            Console.WriteLine(i);
            Console.ReadLine();
        }
        static private int Increment(ref int i)
        {
            return i++;
        }
    }
}
Ответ равен 0.
Я не понимаю, почему post increment i++, из метода Increment, который выполняется на ref (а не на копии переданной переменной), увеличивает значение переменной, но это просто позже игнорируется.
Что я имею в виду в этом видео:
Может кто-нибудь объяснить этот пример и почему во время отладки я вижу, что это значение увеличивается до 1, но затем оно возвращается к 0?
