Согласно MSDN-х design guide for constructors,C# Конструктор - почему конструктор по умолчанию генерируется компилятором только если нет конструктора, а когда нет конструктора по умолчанию не
«Если вы явно не объявлять никаких конструкторов на тип, многие языки (например, C#) автоматически добавят публичный конструктор по умолчанию . (Абстрактные классы получают защищенный конструктор.) Добавление параметризованного конструктора в класс запрещает компилятору добавлять конструктор по умолчанию. вызывает случайные нарушения. "
Почему нет:
«Если вы явно не объявлять любой по умолчанию конструкторов о типе многие языки (например, C#) будут автоматически добавлять открытый конструктора по умолчанию . (Абстрактные классы получают защищенный конструктор.) «
В чем причина этого?
Обратите внимание, что термин «конструктор по умолчанию» применяется только к тому, который добавляет компилятор C#. Если вы добавляете конструктор без параметров, это * не * конструктор по умолчанию. –
Это та же самая причина 'private' существует: она отнимает от пользователей API опасные и нежелательные варианты. 'private' строго не нужен для функционирования языка. Он принимает только варианты. – usr
Возможный дубликат [Должен ли мы всегда включать конструктор по умолчанию в класс?] (Http://stackoverflow.com/questions/3692042/should-we-always-include-a-default-constructor-in-the-class) – Igoranze