2013-04-26 9 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)을보세요 –

+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

관련 문제