IEnumerable 컬렉션
GetEnumerator()라는 하나의 메서드를 포함, foreach 구문 등에서 개체를 하나씩 넘겨주는 역할을 한다.
이 메서드는 System.Collections.IEnumerator 인터페이스를 구현하는 Enumerator 개체를 돌려준다.
Enumerator 개체는 컬렉션의 요소들을 살펴보기 위해 사용된다.
Enumerator는 목록의 요소들을 가리키는 포인터라고 생각하자. 처음 포인터는 첫 번째 항목의 <앞부분>을 가리킨다.
(Enumerator가 가지는 state의 초깃값은 -1) MoveNext 메서드를 호출하면 현재 위치의 다음인 첫 번째 항목으로 이동한다.
메서드 호출 후 가리키는 항목이 존재하면 true를 반환하고 그렇지 않은 경우엔 false를 반환한다.
Current 속성은 현재 가리키는 항목에 접근할 때 사용하며, Reset 메서드는 목록에서 포인터가 첫 번째 항목의 앞부분을 재 지시하도록 설정해준다.
컬렉션의 GetEnumerator 메서드를 사용하여 Enumerator를 생성하고 MoveNext 메서드를 통해 반복 호출하여
Enumerator 의 Current 속성 값을 읽어들이면 한 번에 하나씩 다음 컬렉션의 구성 요소들로 이동할 수 있다.
(이것은 foreach 구문과 기능적으로 동일하다.)
직접 나열 가능한 컬렉션 클래스를 새로 만들고자 한다면 컬렉션 클래스에서 IEnumerable 인터페이스와 IEnumerator 인터페이스를 함께 구현해야 한다.
foreach 문과 유사한 IEnumerator 기본 동작 예제
'Programming > C++, C#' 카테고리의 다른 글
[C#] Lambda Expression (0) | 2018.06.07 |
---|---|
[C#] Generic (0) | 2018.06.06 |
[C#] Interface (0) | 2018.06.06 |
[C#] Delegate , Event (0) | 2018.06.06 |
[C#] Out vs Ref (0) | 2018.06.06 |