C # позволяет указывать параметры свойств в фигурных скобках при инициализации объекта. Это позволяет вам выбирать, какие элементы инициализировать, а какие оставить по умолчанию.
С другой стороны, конструктор выполняет один блок кода с фиксированным набором параметров. Таким образом, чтобы получить тот же эффект, вам нужно создать несколько конструкторов с различными комбинациями свойств, которые вы можете инициализировать, что может быть утомительно.
var x = new Person {FirstName="Homer",LastName="Simpson",Age=47};
в точности эквивалентно этому:
var x = new Person();
x.FirstName="Homer";
x.LastName="Simpson";
x.Age=47;
За исключением того, что это короче и, возможно, легче для глаз.
Он также учитывает конструкции, которые вы продемонстрировали в своем вопросе, что было бы очень утомительно, если бы вам пришлось создавать временные переменные и инициализировать их, как я делал здесь, прежде чем добавлять их в список. (Именно так вы привыкли это делать.) Все без необходимости явно определенного конструктора, который принимает желаемый список параметров, которые могут быть или не быть доступными.
Кроме того, обратите внимание, что, хотя конструктор может инициализировать свойства с помощью частного установщика, этот метод (как должно быть очевидно из приведенного примера) будет работать только при наличии открытого установщика для свойства. Также обратите внимание, что мой сокращенный пример неявно называется конструктором по умолчанию (без параметров), который поэтому должен присутствовать.