By default, an array of reference types gets initialised with all references as null.
Is there any kind of syntax trick to initialise them with new default objects instead?
eg
public class Child
{
}
public class Parent
{
private Child[] _children = new Child[10];
public Parent()
{
//any way to negate the need for this?
for (int n = 0; n < _children.Length; n++)
_children[n] = new Child();
}
}
Use LINQ:
private Child[] _children = Enumerable
.Range(1, 10)
.Select(i => new Child())
.ToArray();
You could use object and collection initializers, though your version is probably terser and can be used as is for larger collections:
private Child[] _children = new Child[] {
new Child(),
new Child(),
new Child(),
new Child(),
new Child(),
new Child(),
new Child(),
new Child(),
new Child()
};
You could use Array.Fill method:
public static void Fill<T> (T[] array, T value);
public class Child
{
}
public class Parent
{
private Child[] _children = new Child[10];
public Parent()
{
Array.Fill(_children, new Child());
}
}
Even if your for loop looks worse, than the nice LINQ statement the runtime behavior of it will be much faster. E.g. a test with 20 Forms in an array is 0.7 (for loop) to 3.5 (LINQ) milliseconds
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With