I think the jist of your problem is understanding that...

Initialising an array of objects does not initialise the individual objects in that array.
Code:
MyObject[] foo = new MyObject[10];
Allocates space (initialises the array) for 10 MyObject objects, but it does not call the MyObject constructor for each one. So you would need to:
Code:
foreach (MyObject myObject in foo)
    myObject = new MyObject(...);