Planet[i] = new PlanetDetails();You can only skip that step if you're using an array of value types (int, bool, float, enum, struct - basically everything that's not a class).
When you make an array, its entries are all set to the "default" value of the corresponding type.
all the other numeric and enum types = whatever their concept of 0 is.
struct: non-null, each individual field = its own default
In this case you have a class, so the default is null; You need to individually 'new' each element in the array.