2012-09-19 71 views
5

默认情况下,引用类型数组被初始化,所有引用都为null。简单的方法来初始化参考类型的数组?

是否有任何类型的语法技巧来初始化它们与新的默认对象,而不是?

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(); 
    } 
} 
+0

不,只是隐藏循环的明显方法(将其放入辅助方法等)。 – dtb

+1

+1指出你想要一个*语法技巧*,而不是大多数人所要求的 - “我可以在不迭代数组的情况下做到这一点吗?”。不过,我假设你想保持某种可读性,并且实际上能够一目了然地告诉代码是干什么的。 =) –

回答

6

使用LINQ:

private Child[] _children = Enumerable 
           .Range(1, 10) 
           .Select(i => new Child()) 
           .ToArray(); 
3

可能使用object and collection initializers,虽然你的版本可能是更简洁,可以将其用作大集合:

private Child[] _children = new Child[] { 
new Child(), 
new Child(), 
new Child(), 
new Child(), 
new Child(), 
new Child(), 
new Child(), 
new Child(), 
new Child() 
}; 
0

即使您的for循环看起来更糟,比t他非常好的LINQ语句,它的运行时行为将会快得多。例如。一个数组中有20个表单的测试是0.7(for循环)到3.5(LINQ)毫秒