Initializer syntax
.net, c#, object-initializers
Solution
No, that doesn't create new objects unless you use `= new SomeType {...}`:
var binding = new WSHttpBinding
{
ReaderQuotas = new XmlDictionaryReaderQuotas { MaxArrayLength = 100000 },
MaxReceivedMessageSize = 10485760
};
Your example shows the initializer syntax for setting properties of existing sub-objects. There is also a similar syntax for calling "Add" methods on collections.
Your code is broadly comparable to:
var binding = new WSHttpBinding();
binding.ReaderQuotas.MaxArrayLength = 100000;
binding.MaxReceivedMessageSize = 10485760;
Problem
I like the C# 3 initializer syntax and use it a lot, but today while looking in Reflector, the following came up: ``` var binding = new WSHttpBinding { ReaderQuotas = { MaxArrayLength = 100000 }, MaxReceivedMessageSize = 10485760 }; ``` At first I thought it was a mistake, but it does compile! Guess I am still learning new stuff all the time. :) From what I can tell, it sets the `MaxArrayLength` property of the `ReaderQuotas` property of the `WSHttpBinding`. Does this syntax create a new `ReaderQuotas` object and then set the property, or does it assume the property to be initialized already? Is this the general way one would use to initialize 'child' properties? I do find the syntax a bit confusing...