C # pozwala określić parametry właściwości w nawiasach klamrowych podczas inicjalizacji obiektu. Pozwala to wybrać i wybrać, które elementy należy zainicjować, a które pozostawić jako domyślne.
Konstruktor natomiast uruchamia jeden blok kodu ze stałym zestawem parametrów. Aby uzyskać ten sam efekt, musisz utworzyć wiele konstruktorów, wszystkie z różnymi kombinacjami właściwości, które możesz chcieć zainicjować, co może być uciążliwe.
var x = new Person {FirstName="Homer",LastName="Simpson",Age=47};
jest dokładnie równoważne z tym:
var x = new Person();
x.FirstName="Homer";
x.LastName="Simpson";
x.Age=47;
Tyle że jest krótszy i prawdopodobnie łatwiejszy dla oczu.
Pozwala również na konstrukcje takie jak zademonstrowane w pytaniu, co byłoby bardzo uciążliwe, gdybyś musiał utworzyć zmienne tymczasowe i zainicjować je, tak jak ja tutaj, przed dodaniem ich do listy. (Tak właśnie to robiłeś). Wszystko to bez wymagania wyraźnie zdefiniowanego konstruktora, który pobiera pożądaną listę parametrów, które mogą być niedostępne.
Zauważ też, że chociaż konstruktor może inicjować właściwości za pomocą prywatnego setera, ta technika (jak powinno być oczywiste z podanego przykładu) będzie działać tylko wtedy, gdy masz publiczny seter dla tej właściwości. Zauważ też, że mój skrócony przykład domyślnie nazywał domyślnego (bez parametrów) konstruktora, który musiałby zatem być obecny.