Это не вопрос ссылки, поскольку вы присваиваете возвращаемое значение обратно значению.
Проблема здесь в том, что i++
увеличивает после , когда оно используется. В этом случае он возвращается, а затем увеличивается. Поскольку переменная является типом значения, увеличивается только локальная переменная внутри Increment ().
Если вы используете ++i
, то локальный член увеличивается, а затем возвращается , что больше, чем вы ожидали.
Сказав это, сложно назвать ваш метод Increment или Decrement, поскольку он не присваивает значение обратно оригиналу. Вы пытались передать ref this i
? Я понятия не имею, можно ли использовать ref в этой ситуации, но это может сделать наименование метода более точным. Эрик Липперт помешал этой идее.