[C#] 열거자(Enumerator)

JanMatny·2024년 10월 15일
0

C#

목록 보기
1/15
post-thumbnail

Enumerator(열거자)

데이터 요소를 하나 씩 리턴하는 기능.
C#에서 IEnumerator 인터페이스를 이용해서 구현할 수 있다.

⑴ 모든 컬렉션은 IEnumerable<T> 인터페이스를 구현한다.

  • 열거자를 꺼내는 GetEnumerator() 라는 메서드를 제공한다.

② 열거자

  • 컬렉션의 요소를 가리키는 객체
  • MoveNext(), Current, Reset() 맴버로 모든 요소 접근 가능
  • 모든 열거자는 사용법이 동일하다.
  • 모든 열거자는 IEnumerator<T> 인터페이스를 구현하고 있다.

속성

Current : 열거자의 현재 위치에 있는 컬렉션의 요소를 가져온다.

MoveNext : 열거자를 컬렉션의 다음 요소로 진행한다.
Reset : 열거자를 컬렉션의 첫번 째 요소 앞에 있는 초기 위치로 설정한다.


foreach

foreach 실행 조건

  • 루프 대상이 GetEnumerator() 메소드를 가지고 있어야 한다.
  • GetEnumerator() 반환타입이 MoveNext() 메소드와 Current 프로퍼티를 가지고 있어야 한다.

foreach문을 사용하면 내부적으로 열거자를 사용하는 코드로 바뀌게 된다.


yield

C#에서 yield가 사용되는 곳은 집합적 데이터를 갖고 있는 컬렉션 클래스이다. 컬렉션 클래스는 데이터 요소를 하나 씩 사용하기 위해 enumerator(Iterator)를 구현하는데
이때 yield를 사용한다.
C# 컴파일러는 yield 문이 사용된 메소드를 컴파일 단계에서 IEnumerable / IEnumerator 코드로 치환해서 내부적으로 구현한다.

yield 속성

  • yield return : 컬렉션 데이터를 하나 씩 리턴하는데 사용한다.
  • yield break : 리턴을 중지하고 iteration 루프를 빠져나올 때 사용한다.
profile
코딩 공부용 벨로그

0개의 댓글