Easy way to initialise array of reference types?
-
02-07-2021 - |
質問
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()
};
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
所属していません StackOverflow