@footballer

Как работают проперти со значимыми типами — почему так?

Вопрос вызван этой статьей https://m.habr.com/ru/post/124404/

Ссылка на фиддл https://dotnetfiddle.net/uFhUvl
В коде на фиддле метод IncrementX метод обращается к автопроперти X значимого типа int и инкрементит его, т.е. чисто логически, сначала геттер должен вернуть не ссылку на поле, а копию поля, а дальше операцией инкримента меняется значение копии. В итоге как минимум в результате должно было вывестись 5, а не 6, а как максимум должен был упасть эксепшен
"Cannot modify the return value of 'что-то тут' because it is not a variable".
Но по факту в результате выводится 6, а не 5, и нет никаких эксепшенов. Кто-нибудь может объяснить?
  • Вопрос задан
  • 156 просмотров
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
Эээ X++ => X = X + 1 Значение копии то меняется, но затем оно заносится обратно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы