C # vous permet de spécifier des paramètres de propriété entre accolades lorsque l'objet est initialisé. Cela vous permet de choisir les éléments à initialiser et ceux à laisser par défaut.
Un constructeur, d'autre part, exécute un seul bloc de code avec un ensemble fixe de paramètres. Donc, pour obtenir le même effet, vous devez créer plusieurs constructeurs, tous avec les diverses combinaisons de propriétés que vous voudrez peut-être initialiser, ce qui pourrait être fastidieux.
var x = new Person {FirstName="Homer",LastName="Simpson",Age=47};
est exactement équivalent à ceci:
var x = new Person();
x.FirstName="Homer";
x.LastName="Simpson";
x.Age=47;
Sauf que c'est plus court et sans doute plus agréable pour les yeux.
Cela permet également des constructions comme vous l'avez démontré dans votre question, ce qui serait très fastidieux si vous deviez créer des variables temporaires et les initialiser comme je l'ai fait ici avant de les ajouter à la liste. (C'est ainsi que vous deviez le faire auparavant.) Le tout sans avoir besoin d'un constructeur explicitement défini qui prend la liste de paramètres souhaitée, qui peut ou non être disponible.
Notez également que même si un constructeur peut initialiser des propriétés avec un setter privé, cette technique (comme cela devrait être évident dans l'exemple fourni) ne fonctionnera que si vous avez un setter public pour la propriété. Notez également que mon exemple raccourci a implicitement appelé le constructeur par défaut (sans paramètre), qui devrait donc être présent.