C # consente di specificare i parametri di proprietà nelle parentesi graffe quando l'oggetto viene inizializzato. Questo ti permette di scegliere quali elementi da inizializzare e quali lasciare come predefiniti.
Un costruttore, d'altra parte, esegue un singolo blocco di codice con un set fisso di parametri. Quindi, per ottenere lo stesso effetto, dovresti creare più costruttori con tutte le varie combinazioni di proprietà che potresti voler inizializzare, il che potrebbe essere noioso.
var x = new Person {FirstName="Homer",LastName="Simpson",Age=47};
è esattamente equivalente a questo:
var x = new Person();
x.FirstName="Homer";
x.LastName="Simpson";
x.Age=47;
Tranne che è più corto e probabilmente più facile per gli occhi.
Permette anche costrutti come hai dimostrato nella tua domanda, il che sarebbe molto noioso se dovessi creare variabili temporanee e inizializzarle come ho fatto qui prima di aggiungerle alla lista. (Questo è il modo in cui dovevi farlo). Tutto senza richiedere un costruttore esplicitamente definito che raccolga l'elenco di parametri desiderato, che può essere o non essere disponibile.
Inoltre, si noti che mentre un costruttore può inizializzare le proprietà con un setter privato, questa tecnica (come dovrebbe essere ovvio dall'esempio fornito) funzionerà solo se si dispone di un setter pubblico per la proprietà. Nota anche che il mio esempio abbreviato chiamava implicitamente il costruttore predefinito (senza parametri), che quindi dovrebbe essere presente.