2013-04-26 4 views
2

Можно ли инициализировать массив классов с помощью конструктора по умолчанию (или даже лучше, указанного) без прохождения цикла?инициализировать массив с конструктором по умолчанию

Так, скажем, у меня есть массив Person:

var arr = new Person[10]; 

Теперь я должен инициализировать каждый Person проходом по всем из них.

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

Могу ли я избежать цикла?

+3

Посмотрите на этот [ответ] (http://stackoverflow.com/questions/4839470/array-initialization-with-default-constructor) от @JonSkeet –

+0

Обратите внимание, что ваш цикл не будет компилироваться, но мы принимаем ваш пункт. (Присвоение переменной цикла не будет работать, вам понадобится цикл «for» или что-то подобное.) –

ответ

2

Для массива произвольного размера вы действительно не можете избежать цикла. Вы можете сделать что-то вроде этого:

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

, но это также использует петлю под водой.

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

Для средних и больших массивов этот взгляд выглядит хуже, чем цикл. –

+1

@ Pierre-LucPineault не оспаривает это, вопрос состоял в том, как избежать цикла. – Woot4Moo

Смежные вопросы