Я много читал о том, почему конструкторы полезны, и все найденные ресурсы указывают, что конструкторы используются для инициализации экземпляров ваших классов. Ключевым преимуществом использования конструктора является то, что он гарантирует, что объект будет проходить через правильную инициализацию перед использованием, часто принимая параметры. Это помогает обеспечить целостность объекта и помогает сделать приложения, написанные с объектно-ориентированными языками, более надежными.Конструкторы в C#
По умолчанию в C# создается пустой конструктор по умолчанию, если в классе не указаны конструкторы.
Большинство примеров, которые я нахожу, указываю что-то вроде этого;
public Car(int speedCurrent, int gearCurrent) {
speed = speedCurrent;
gear= startGear;
}
Car myCar = new Car(0, 0);
Теперь, что является практическим пунктом создания конструктора, когда вы можете указать свойства;
public int speed { get; set; }
public int gear { get; set; }
И инициализируйте его следующим образом;
Car myCar = new Car();
myCar.speed = 0;
myCar.gear = 0;
Я не могу обернуть голову вокруг необходимости иметь явное создание конструктора. Я был бы признателен, если бы кто-нибудь дал мне хороший практический пример.
Я думаю, что вы закончили думать об этом. Свойство отлично, если вы хотите изменить это значение вне конструктора. Конструктор просто инициализирует значение при создании объекта. Для чего-то вроде скорости это неизбежно изменится в ходе жизни объектов, поэтому свойство - хороший способ изменить это значение. –
В вашем случае было бы трудно увидеть выгоду. Но если, например, вам нужно выполнить какой-то тип логики, чтобы заполнить свойства в классе, тогда это делает много смысла. На самом деле я считаю его личным предпочтением. – Wjdavis5
Чистый, легко читаемый код. Одна из самых важных причин, которые вы уже дали себе, обеспечивая правильную инициализацию. Если метод использует правильно заданные поля и свойства, ему нужен хороший конструктор. Но если вы собираетесь устанавливать свойства после инициализации, также проверьте это для лучшей читаемости https://msdn.microsoft.com/en-us/library/bb384062.aspx – ikkentim