Я бы всегда использовал свойства - это дает вам больше гибкости:
- позже вы можете создать более сложные методы получения и установки, если это необходимо
- Вы можете указать различную видимость на геттере и сеттере
- вы можете определить виртуальные свойства и переопределить их в классах-потомках, если необходимо
- вы можете использовать привязку данных к свойствам, но не к полям
Кроме того, кажется, что .NET-отражение немного отличается по свойствам от полей, поэтому, если у вас есть сочетание свойств и полей, вам нужно знать об этих тонких различиях - если вы используете только свойства, вы хороши идти: -)
Находясь внутри класса, вы можете использовать либо поле резервного хранилища, либо свойство - если вы используете свойство, будут использоваться любые побочные эффекты, которые может иметь ваш установщик (обновление других полей, регистрация вашего звонка и т. Д.) - если вы получите доступ к полю резервного копирования напрямую, вы обойдете их. Это может быть хорошо или плохо - зависит от вашего сценария. Просто знайте, что вы делаете! : -)
Марк