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

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

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

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

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

Answer 1

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

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

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

Answer 2

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

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

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

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

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

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

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

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

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

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

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

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

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

343