2010-12-16 6 views
7

내 코드에서List <>를 원소로 채우는 방법

List<BookedReelsState> retVal = new List<BookedReelsState>(somesize); 

일부 조건이 작동하면 코드에서 나중에 일치합니다.이 전체 목록을 같은 값으로 채울 필요가 있습니다.

물론 foreach 루프를 통해 값을 설정할 수 있습니다. 더 우아한 방법이 있습니까? 나는 여기서 새로운 것을 배울 뿐이다.

+0

'AddRange' 어쩌면? – leppie

답변

18
retVal.AddRange(Enumerable.Repeat(value, somesize)); 
0

IEnumerable이있는 경우 List.AddRange을 사용할 수 있습니다.

예 : 여기

var list = new List<BookedReelsState>(20); 

var someEnumerable = new [] 
{ 
    new BookedReelsState(1), 
    new BookedReelsState(2), 
    new BookedReelsState(2) 
}; 

list.AddRange(someEnumerable); 
2

두 가지.

먼저 List<T>(int capacity)은 이미 capacity 개의 항목이있는 목록을 만들지 않습니다. 단지 메모리를 예약합니다. 그래서 예의 목록 위는 길이가 0

에 동일입니다하지만 당신은 목록을 가지고 있고 그것의 각 요소를 설정하려는 경우, 당신은 이런 식으로 작업을 수행 할 수있을 것이다 :

retVal.ForEach(rv => rv = desiredValue); 

desiredValue 각 요소에 대해 설정하려는 값입니다.

같은 값으로 목록의 모든 요소를 ​​채우는 것이 이상하다는 것을 알게되었습니다. 모든 요소가 동일하다면리스트는 목적이 없지만 일부 기본값을 채우고 나중에 일부 값을 변경해야 할 수도 있습니다.

5
retVal.ForEach(b => b.changedProp = newValue); 
관련 문제