C# Зачем в классах нужны конструкторы?

Добрый день. Вопрос состоит в том, что в C# итак можно присвоить значения полям (через те же свойства) и без конструктора, так зачем же нужен конструктор?
Заранее спасибо за разнесение.

Перед тем как объяснять на примерах нужно сказать, что конструктор инициализирует созданные поля в классе либо же значениями по умолчанию (для каждого типа данных они свои), либо же пользовательскими (при использовании пользовательских конструкторов).

В C# действительно можем присвоить значения полям и свойствам не используя конструктор, но , во первых, так делать можно только с открытыми полями/свойствами (к которым применён модификатор-доступа public).
Иногда случаются случаи, когда в классе присутствуют закрытые (private/protected) поля/свойства и им напрямую (вне класса) присвоить какие-либо значения невозможно, но они сами каким-то образом могут влиять на работу различных методов в классе. Так вот что бы задать им определённые значения нужно использовать пользовательский конструктор, ведь через него можно присвоить значение полю/свойству и дальше, при работе с созданным экземпляром, пользователь никаким образом не сможет его изменить (разве что создать новый экземпляр передавая в его конструктор другие значения).
Это первая причина необходимости конструкторов, вторая же состоит в том чтобы не выполнять присвоения значения полю/свойству дважды.
В описанной ситуации:

C# итак можно присвоить значения полям (через те же свойства)

будет двойная работа! сначала конструктор инициализирует поля значения по умолчания, а ботом в коде происходит второе присвоение уже вашими значениями. Для проверки этого создайте класс с несколькими открытыми полями/свойствами, и пошагово выполните проход по программе (просматривая значения полей/свойств).

1 Like

Спасибо за разъяснение.