Автоматические свойства C# [дубликат]

211
07 марта 2018, 04:58

На данный вопрос уже ответили:

  • Для чего нужны свойства? 4 ответа

Какой смысл использовать автоматические свойства в C#? Они ведь не способствуют поддержке инкапсуляции, так как мы не накладываем никакие ограничения в контексте get и set. По факту, нет никакой разницы, работать ли напрямую с состоянием объекта или работать с автоматическим свойством. Для чего тогда они нужны?

Answer 1

Большинство использует это как карго-культ. И для сценария получения/установки хватит, конечно, и публичных полей.

Однако код продукта со временем развивается, и, возможно, вам со временем понадобится некоторая логика (например, валидация) при получении или установке значения. В этом случае вам придется менять поле на свойство или пару методов. А это уже несовместимое изменение.

От такого как раз и спасут свойства -- пара get/set у вас уже есть, останется добавить нужную логику. И именно потому, что получение и установка значения уже инкапсулирована в свойство, такое изменение будет незаметно для клиентов.

Answer 2

Задел на будущее - ничто не мешает в перспективе заменить их на обычные свойства без модификации клиентского кода. Кроме того, они могут быть виртуальными и объявляться в интерфейсах.

READ ALSO
Как лучше реализовать задачу?

Как лучше реализовать задачу?

Есть функцияТуда я бросаю список List<double>, прохожусь по каждому элементу и рассчитываю некоторыми функциями новый массив

196
Перенести вычисления на видеокарту

Перенести вычисления на видеокарту

Есть программа, в которой проводится цикл и в нем параллельные вычисленияВсе вычисления, как я понял, проходят на процессоре, использую всё...

199
Unity3D - Вставка Prefab&#39;a в Prefab

Unity3D - Вставка Prefab'a в Prefab

Возможно ли по средством кода добавить в Prefab другой Prefab? К примеру есть рукоядка топора и одеть на неё лезвие топора?

204
Как сделать так чтобы одна таблица создавалась на основе двух предыдущих?

Как сделать так чтобы одна таблица создавалась на основе двух предыдущих?

Привет!Я разрабатываю для себя приложение на С# с использованием Entity Framework и у меня начало получатся добавлять и выводить данные с базы но мне...

258