Я довольно новичок в C #, и я думаю, что свойства - замечательная вещь. На самом деле, так замечательно, что я не вижу никакого реального преимущества в использовании полей. Даже для частных полей кажется, что гибкость и модульность, которые предлагают свойства, могут в лучшем случае избавить вас от серьезных головных болей, а в худшем - вообще не дают никакого эффекта.
Единственное преимущество, которое я вижу для полей, это то, что вы можете инициализировать их встроенными. Но в большинстве случаев вы все равно хотите инициализировать их в конструкторе. Если вы не используете встроенную инициализацию, есть ли причина не использовать свойства все время?
Изменить: Некоторые люди подняли вопрос о необходимости резервного копирования свойств с полями (явно или автоматически). Позвольте уточнить мой вопрос: есть ли причина использовать поля кроме как для резервного копирования свойств ? Т.е., есть ли время, когда SomeType someField;
предпочтительнее SomeType SomeProperty { get; set; }
?
Edit 2: DanM, Skurmedel и Seth дали действительно полезные ответы. Я принял DanM, поскольку он является наиболее полным, но если бы кто-то суммировал свои ответы в одном ответе, я был бы рад принять его.