C#에서 IEnumerable 인터페이스란?
IEnumerable은 C#에서 컬렉션을 열거(순회)할 수 있게 해주는 기본 인터페이스입니다. 이 인터페이스는 IEnumerator를 반환하는 단 하나의 메서드 GetEnumerator()를 정의하며, 열거가 가능한 모든 제네릭이 아닌(non-generic) 컬렉션의 기반이 되는 인터페이스입니다.
IEnumerable을 구현한 컬렉션은 foreach 문과 함께 사용할 수 있으며, 이를 통해 컬렉션 요소에 대한 읽기 전용(read-only) 접근이 가능해집니다. 즉, 별도의 인덱스 처리 없이도 배열, 리스트 등 다양한 데이터 집합을 간결하고 안전하게 순회할 수 있습니다.
GetEnumerator() 메서드
IEnumerable 인터페이스에는 다음과 같은 단 하나의 메서드가 선언되어 있습니다.
GetEnumerator() − 컬렉션 전체를 순회(iterate)할 수 있는 열거자(enumerator)를 반환합니다.
구현 예제
다음은 C#에서 IEnumerable 인터페이스의 GetEnumerator() 메서드를 구현한 일반적인 형태입니다.
IEnumerator IEnumerable.GetEnumerator() {
return (IEnumerator) GetEnumerator();
}IEnumerable의 주요 확장 메서드
LINQ와 함께 사용되는 IEnumerable 인터페이스에는 편리한 확장 메서드들이 제공됩니다. 대표적인 메서드는 다음과 같습니다.
| 번호 | 메서드 이름 및 설명 |
|---|---|
| 1 | AsParallel() 쿼리를 병렬로 처리할 수 있도록 활성화하여 대용량 데이터 처리 성능을 향상시킵니다. |
| 2 | AsQueryable() IEnumerable을 IQueryable로 변환하여 LINQ 쿼리 공급자를 통한 실행을 지원합니다. |
| 3 | Cast<TResult>() IEnumerable의 요소들을 지정된 타입으로 캐스팅(형 변환)합니다. |
| 4 | OfType<TResult>() 지정된 타입에 해당하는 요소들만 필터링하여 반환합니다. |
정리
IEnumerable은 C# 컬렉션 순회의 핵심이 되는 인터페이스로, foreach 문 사용의 전제 조건이 됩니다. 또한 LINQ의 다양한 확장 메서드(AsParallel(), AsQueryable(), Cast<TResult>(), OfType<TResult>() 등)와 결합하면 데이터 조회, 변환, 필터링 작업을 훨씬 더 유연하고 효율적으로 수행할 수 있습니다.