List Loop in remove elements
c#에서 List를 Loop 하는 과정에서 Remove를 하게 되면
인덱스 에러가 발생하는데 List를 ToArray를 사용해서 List를 인스턴스 시킨 상태로 삭제를 하는 것을 보게 되어서 포스팅하게 되었다.
foreach (var item in destroyList.ToArray())
{
destroyList.Remove(item);
}
Microsoft List<T>ToArray : [링크]
개인적으로는 ToArray를 통해서 메모리를 인스턴스 시킨 이 후에 사용하는 것을 비추한다.(효율성이 낮지만 성공한 경우에만 제거한다든지 그런 특정 조건에서만) 실제 새 배열을 만드는 과정이 포함되어있어서. 순차적인 루프인 경우에는 Loop Index를 역으로 처리하는 방식 or Linq를 사용해서 Where을 통한 특정 데이터 제거하는 방식을 기본적으로 추천한다.
list.RemoveAll(p=>p.Delete);
stackoverflow : [링크]
★☆☆☆☆
반응형
'개발 > 기본) 기본기' 카테고리의 다른 글
기본기)c#) is 연산자, as 연산자 (0) | 2021.03.05 |
---|---|
기본기)빌보드 기법(Bill-Board) (2) | 2021.02.15 |
기본기)c#) Nullable 값 형식 ( ? 연산자) (0) | 2021.02.02 |
기본기)인터페이스(interface) (0) | 2021.01.10 |
기본기)Lazy <T> 클래스 (2) | 2021.01.07 |
댓글