Please see my comment to the question. I really don't understand what would be so hard to find out the terminology. It's just called "initializer", nothing special; this is the term you already used yourself (credit to you :)):
https://msdn.microsoft.com/en-us/library/bb384062.aspx[
^].
Aren't the benefits of this syntax obvious? First of all, it can be considered as some equivalent of passing parameters
by name, without having any parameters, though. Frankly, quickly writing the call to a constructor with more than a couple of parameters is somewhat bothering, especially if there are many different constructors with different number of parameters, even if you use Intellisense; you need to write all parameters in certain order, and have to compare different constructors to make a decision which one you really need, often in the middle of the process of filling in those parameters.
With newer syntax, you can write the set of values of some properties in arbitrary order. When you look at your own or someone else's code, you can clearly see which value goes to what property. When you design the constructors, you can avoid constructors with too many parameters, leaving only the most important cases. Even when you, by some reason, compile the code targeting the earlier C# versions when this constructor, you can always leave the user with the opportunity to assign the property values, not passed as constructor parameters, using
assignment statements, but the user of the language with this newer form of the initializer can really enjoy it's benefits.
Really, I feel uncomfortable explaining the rationale of the feature. It resembles the awkward feeling of explaining the joke to those who cannot get it — not the best activity. As I said, "good feature does not need excuses".
—SA