The object initializer does not actually instantiate your members.
See the following code:
var myInstance = new MyInstance { MyMember = new MyMember { Value = 3 }; }
This compiles to:
var myMember= new MyMember(); myMember.Value = 3; var myInstance = new MyInstance(); myInstance.MyMember = myMember;
In your case, you forgot to create an instance of MyMember , so the initializer is trying to access this property and assign additional values ββto it. This is due to the fact that object initializers always start after the corresponding constructor, which was not called in your case. So in your case, this compiles as follows:
var myInstance = new MyInstance(); myMymber.Value = 3;
Causing a NullReferenceException as myMember has never been myMember .
Why is this even compiling? Well, I assume that the compiler assumes that you create an instance of MyMember in the constructor of MyInstance . It may not know when you actually did it.
class Instance { MyMember MyMember = new MyMember(); }
Leaving null members is, of course, absolutely fair.
HimBromBeere
source share