2013-04-26 83 views
2

我可以使用默认构造函数(甚至更好,指定的)初始化一个类的数组而不经过循环吗?使用默认构造函数初始化数组

所以,让我们说我有Person数组:

var arr = new Person[10]; 

现在,我应该通过所有这些循环初始化每个Person

foreach(var p in arr) 
    p = new Person(); 

我可以避免循环吗?

+3

从@JonSkeet看看这个[回复](http://stackoverflow.com/questions/4839470/array-initialization-with-default-constructor) – 2013-04-26 18:49:26

+0

请注意,你的循环不会编译,但我们采取你的观点。 (分配给循环变量将不起作用,你需要一个'for'循环或者其他相同的东西。) – 2013-04-26 18:51:45

回答

2

对于任意大小的数组,你真的无法避免循环。你可以做这样的事情:

Enumerable.Range(0,10).Select(i=>new Person()).ToArray(); 

但它也使用循环underneat。

0
var arr = new Person[] {new Person(),new Person()...}; 
+4

对于中型到大型的数组,这看起来比诚实地循环更糟糕。 – 2013-04-26 18:50:39

+1

@ Pierre-LucPineault没有提出异议,问题是如何避免循环。 – Woot4Moo 2013-04-26 19:14:24

相关问题