使用默认构造函数初始化数组
问题描述:
我可以使用默认构造函数(甚至更好,指定的)初始化一个类的数组而不经过循环吗?使用默认构造函数初始化数组
所以,让我们说我有Person
数组:
var arr = new Person[10];
现在,我应该通过所有这些循环初始化每个Person
。
foreach(var p in arr)
p = new Person();
我可以避免循环吗?
答
对于任意大小的数组,你真的无法避免循环。你可以做这样的事情:
Enumerable.Range(0,10).Select(i=>new Person()).ToArray();
但它也使用循环underneat。
答
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
从@JonSkeet看看这个[回复](http://stackoverflow.com/questions/4839470/array-initialization-with-default-constructor) – 2013-04-26 18:49:26
请注意,你的循环不会编译,但我们采取你的观点。 (分配给循环变量将不起作用,你需要一个'for'循环或者其他相同的东西。) – 2013-04-26 18:51:45