Одна из причин этого заключается в том, что он помещает весь код инициализации в одно место, что удобно для других, читающих ваш класс. Сказав это, я не делаю этого по двум основным причинам. (1) Я использую тестирование TDD / Unit, чтобы определить поведение моего класса. Если вы хотите знать, что делает конструктор без параметров, вам действительно следует прочитать тесты, которые я построил на конструкторе без параметров. (2) В C # 3.0 я обычно использую автоматические свойства и встроенную инициализацию с помощью конструктора без параметров, чтобы создать экземпляр объекта. Это намного более гибко, и оно помещает определение свойств прямо в строку, где используется код. Это переопределит любую инициализацию в конструкторе, поэтому я редко помещаю их туда. Конечно, это относится только к C #.
Ex. (из 2)
var foo = new Foo { Bar = "baz" };
public class Foo
{
public string Bar { get; set; }
public Foo() { }
}