Какой смысл использовать автоматические свойства в C#? Они ведь не способствуют поддержке инкапсуляции, так как мы не накладываем никакие ограничения в контексте get и set. По факту, нет никакой разницы, работать ли напрямую с состоянием объекта или работать с автоматическим свойством. Для чего тогда они нужны?
2 Answers
Большинство использует это как карго-культ. И для сценария получения/установки хватит, конечно, и публичных полей.
Однако код продукта со временем развивается, и, возможно, вам со временем понадобится некоторая логика (например, валидация) при получении или установке значения. В этом случае вам придется менять поле на свойство или пару методов. А это уже несовместимое изменение.
От такого как раз и спасут свойства -- пара get/set у вас уже есть, останется добавить нужную логику. И именно потому, что получение и установка значения уже инкапсулирована в свойство, такое изменение будет незаметно для клиентов.
- 25,167
- 4
- 46
- 82
Задел на будущее - ничто не мешает в перспективе заменить их на обычные свойства без модификации клиентского кода. Кроме того, они могут быть виртуальными и объявляться в интерфейсах.
- 8,656