Ничего из этого не хорошо.В некоторых случаях хорошо устанавливать других членов, выполнять кэширование и т. Д. - нет правила, согласно которому свойство имеет , которое должно быть просто поддержано переменной-членом без логики, и проверка очень хорошапример того, где вы хотели бы использовать другую логику.
Однако обычно не хорошая идея написать свойство, чтобы получение значения, которое вы только что установили, дало радикально другой ответ,В частности,
foo.SomeProperty = foo.SomeProperty;
должен почти никогда не делать ничего значительного (тогда как в вашем примере это изменило бы значение).
(Сказав это, ваш установочный код)для первых двух примеров не работает.)