Mit C # können Sie Eigenschaftsparameter in geschweiften Klammern angeben, wenn das Objekt initialisiert wird. Auf diese Weise können Sie auswählen, welche Elemente initialisiert und welche als Standardeinstellungen beibehalten werden sollen.
Ein Konstruktor führt dagegen einen einzelnen Codeblock mit einem festen Satz von Parametern aus. Um den gleichen Effekt zu erzielen, müssten Sie mehrere Konstruktoren mit den verschiedenen Kombinationen von Eigenschaften erstellen, die Sie möglicherweise initialisieren möchten. Dies kann mühsam sein.
var x = new Person {FirstName="Homer",LastName="Simpson",Age=47};
ist genau gleichbedeutend mit:
var x = new Person();
x.FirstName="Homer";
x.LastName="Simpson";
x.Age=47;
Abgesehen davon, dass es kürzer ist und die Augen besser schont.
Es können auch Konstrukte verwendet werden, wie Sie in Ihrer Frage gezeigt haben. Dies wäre sehr mühsam, wenn Sie temporäre Variablen erstellen und wie hier beschrieben initialisieren müssten, bevor Sie sie zur Liste hinzufügen. (So mussten Sie es früher tun.) Alles ohne einen explizit definierten Konstruktor, der die gewünschte Liste von Parametern aufnimmt, die möglicherweise verfügbar sind oder nicht.
Beachten Sie auch, dass ein Konstruktor zwar Eigenschaften mit einem privaten Setter initialisieren kann, diese Technik (wie aus dem bereitgestellten Beispiel ersichtlich sein sollte) jedoch nur funktioniert, wenn Sie einen öffentlichen Setter für die Eigenschaft haben. Beachten Sie auch, dass mein verkürztes Beispiel implizit den Standardkonstruktor (ohne Parameter) nennt, der daher vorhanden sein müsste.