😃 IEnumerable<T> vs List<T> 비교

 

😃 최근에 회사 코드를 List에서 IEnumerable 코드로 몇몇개 바꾸면서 무슨 차이가 있는지 정리해 보았다. 




📚 기본 개념

항목 IEnumerable List
정의 읽기 전용의 순차열 인터페이스 요소 추가/삭제 가능한 가변 컬렉션 클래스
자료형 인터페이스 클래스
접근 방식 foreach만 가능 foreach, list[i] 등 다양한 접근 가능
가공 특성 Linq 사용시 지연실행 모든 요소가 메모리에 있어 즉시 사용 가능

 

지연실행 ?

 - 실제로 사용될 때까지 실행을 미루는 것

 - 즉 코드는 써도 당장 실행되지 않고 foreach 등으로 순회할 때 실행된다는 뜻

 


 

📚 주요 기능 비교

기능 IEnumerable List
요소 추가 / 삭제 불가능 Add(), Remove() 가능
인덱스 접근 불가능 list[i] O(1) 가능
Linq 사용 매우 유용 가능하지만 지연 실행 아님
성능 1회 순회 시 유리 다회 순회 및 수정시 유리 

 


 

📚 어떤 상황에 어떤 걸 써야 할까?

상황 추천 타입 이유
단순 순회만 필요할 때 IEnumerable<T> 가볍고 메모리 효율적
요소를 추가/삭제해야 할 때 List<T> Add(), Remove()등 수정 기능 사용가능
여러 번 순회하거나 캐싱 필요할 때 List<T> 메모리에 있으므로 재사용 유리
API 응답으로 DTO 전할 때  IEnuerable<T> 외부에서 유연하게 사용할 수 있음