private get нужен для ограничения доступа свойства которое возращает значение. Т.е. получить значение свойства мы можем только внутри класса или структуры. А в вашем коде происходит следующее:
Так как в функцию WriteLine(int value) мы передаем значимый тип
Ссылка на MSDNПередавая в метод переменную типа значения, вы передаете ему копию этой переменной.
Следовательно операция будет выглядеть так :
Console.WriteLine(int value = obj.x = 1);
(т.е. выполниться множественное присвоение сразу нескольким переменным). В итоге в консоль вы выводите значение переменной value, а не obj.x
Соответственно код:
Console.WriteLine(int value = obj.x);
не будет компилироваться, т.к. obj.x имеет приватный уровень доступа get.