내 코드에서List <>를 원소로 채우는 방법
List<BookedReelsState> retVal = new List<BookedReelsState>(somesize);
일부 조건이 작동하면 코드에서 나중에 일치합니다.이 전체 목록을 같은 값으로 채울 필요가 있습니다.
물론 foreach
루프를 통해 값을 설정할 수 있습니다. 더 우아한 방법이 있습니까? 나는 여기서 새로운 것을 배울 뿐이다.
내 코드에서List <>를 원소로 채우는 방법
List<BookedReelsState> retVal = new List<BookedReelsState>(somesize);
일부 조건이 작동하면 코드에서 나중에 일치합니다.이 전체 목록을 같은 값으로 채울 필요가 있습니다.
물론 foreach
루프를 통해 값을 설정할 수 있습니다. 더 우아한 방법이 있습니까? 나는 여기서 새로운 것을 배울 뿐이다.
retVal.AddRange(Enumerable.Repeat(value, somesize));
IEnumerable이있는 경우 List.AddRange을 사용할 수 있습니다.
예 : 여기
var list = new List<BookedReelsState>(20);
var someEnumerable = new []
{
new BookedReelsState(1),
new BookedReelsState(2),
new BookedReelsState(2)
};
list.AddRange(someEnumerable);
두 가지.
먼저 List<T>(int capacity)
은 이미 capacity
개의 항목이있는 목록을 만들지 않습니다. 단지 메모리를 예약합니다. 그래서 예의 목록 위는 길이가 0
에 동일입니다하지만 당신은 목록을 가지고 있고 그것의 각 요소를 설정하려는 경우, 당신은 이런 식으로 작업을 수행 할 수있을 것이다 :
retVal.ForEach(rv => rv = desiredValue);
desiredValue 각 요소에 대해 설정하려는 값입니다.
같은 값으로 목록의 모든 요소를 채우는 것이 이상하다는 것을 알게되었습니다. 모든 요소가 동일하다면리스트는 목적이 없지만 일부 기본값을 채우고 나중에 일부 값을 변경해야 할 수도 있습니다.
retVal.ForEach(b => b.changedProp = newValue);
'AddRange' 어쩌면? – leppie