Результат выполнения задания
x = x++;
не определено в C и C ++ , и я думаю, то же самое можно сказать и о C #.
Таким образом, фактическая последовательность операций, которая происходит, зависит от того, как компилятор решит ее реализовать, нет никакой гарантии, будет ли сначала назначаться или увеличиваться.
(это хорошо определено в C #, как указал Джон Скит в комментариях. Хотя сейчас я чувствую, что этот ответ имеет гораздо меньшую ценность, я оставляю этот пост без ответа для вопроса ОП и его ответа в комментарии.)
Однако, в этом случае, появляется последовательность операций, которая происходит так:
- старое значение (10) из x сохраняется
- x увеличивается для части ++
- старое значение теперь присваивается х для присвоения
Таким образом, хотя приращение происходит, оно заменяется присваиванием со старым значением, таким образом, сохраняя x равным 10.
НТН