Вот простой код приложения консоли, который возвращает результат, который я не понимаю полностью.
Попробуйте подумать, выводит ли он 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?