Может ли кто-нибудь посоветовать мне, какой подход принять при написании конструкторов C#
?
В других языках, таких как C++
, все в порядке - вы обычно не делаете видимыми внутренние поля и предоставляете им getters/setters.
Это означает, что вы можете предоставить вашему классу конструкторы, которые инициализируют все/некоторые из ваших локальных членов и будут счастливы.
C#
, однако, имеет properties
, что позволяет нам написать что-то вроде:
Class x = new Class { Field1 = new Field1 ...., Field2 = new Field2 }
Это позволяет привязать конструкцию объекта и, как я полагаю, может удалить много конструкторов, что потребовалось бы, если бы у нас не было properties
.
Объединяя это со значениями по умолчанию для свойств, как я предполагаю, мы можем полностью избавиться от неспециализированных конструкторов, которые фактически выполняют некоторую работу.
Теперь - можно ли удалить избыточные конструкторы и разрешить создание объекта с помощью инициализации поля?
Каковы недостатки такого подхода? Может ли кто-нибудь дать общие рекомендации о объединении использования полей и конструкторов, некоторые rules of thumb
, возможно?
Спасибо.