Я новичок в C # и считаю, что свойства - замечательная вещь. Настолько замечательно, что я не вижу никаких реальных преимуществ в использовании полей вместо этого. Кажется, что даже для частных полей гибкость и модульность, которые предлагают свойства, в лучшем случае избавят вас от серьезных головных болей, а в худшем - не дадут никакого эффекта.
Единственное преимущество, которое я вижу для полей, - это то, что вы можете инициализировать их в строке. Но в большинстве случаев вы все равно хотите инициализировать их в конструкторе. Если вы не используете встроенную инициализацию, есть ли причина не использовать свойства постоянно?
Изменить: некоторые люди подняли вопрос о необходимости резервного копирования свойств с полями (явно или автоматически). Позвольте прояснить мой вопрос: есть ли причина использовать поля кроме резервного копирования свойств? То есть, когда-нибудь SomeType someField;
предпочтительнее SomeType SomeProperty { get; set; }
?
Изменить 2: ДанМ, Скурмедель и Сет дали действительно полезные ответы. Я принял DanM, так как он является наиболее полным, но если бы кто-то суммировал свои ответы в один ответ, я был бы счастлив принять его.
readonly
, что делает этот вопрос еще более актуальным. - person hypehuman   schedule 11.12.2015SomeType SomeProperty { get; } = new SomeType();
, но что вы имеете в виду под ключевым словомreadonly
? - person Sebastian Werk   schedule 27.06.2018readonly
. - person hypehuman   schedule 30.06.2018