Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Array.GetEnumerator() 메서드 완벽 정리 – 배열을 IEnumerator로 순회하는 방법

C#의 Array.GetEnumerator() 메서드는 배열의 요소를 순차적으로 탐색할 수 있는 IEnumerator 객체를 반환합니다. 이 메서드를 활용하면 foreach 문 없이도 배열의 각 요소에 직접 접근하고 제어할 수 있습니다.

구문

메서드의 기본 구문은 다음과 같습니다.

public virtual System.Collections.IEnumerator GetEnumerator();

반환값과 동작 원리

이 메서드는 매개변수를 받지 않으며, 배열의 모든 요소를 순회할 수 있는 System.Collections.IEnumerator 객체를 반환합니다. 반환된 열거자는 다음과 같이 동작합니다.

  • MoveNext(): 커서를 다음 요소로 이동시키며, 더 이상 요소가 없으면 false를 반환합니다.
  • Current: 현재 위치의 요소 값을 읽어옵니다.

IEnumerator는 처음 생성될 때 첫 번째 요소 에 위치하므로, 반드시 MoveNext()를 먼저 호출해야 Current에 유효한 값이 담긴다는 점에 유의하세요.

예제

다음은 Array.GetEnumerator() 메서드를 사용해 문자열 배열을 순회하는 예제입니다.

using System;
using System.Collections;

public class Demo {
    public static void Main() {
        int j = 0;
        Console.WriteLine("배열 요소...");
        string[] arr = { "car", "bike", "truck", "bus" };
        for (int i = 0; i < arr.Length; i++) {
            Console.Write("{0} ", arr[i]);
        }
        Console.WriteLine();

        IEnumerator newEnum = arr.GetEnumerator();
        Console.WriteLine("배열의 IEnumerator...");
        while ((newEnum.MoveNext()) && (newEnum.Current != null)) {
            Console.WriteLine("[{0}] {1}", j++, newEnum.Current);
        }
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

배열 요소...
car bike truck bus
배열의 IEnumerator...
[0] car
[1] bike
[2] truck
[3] bus

핵심 포인트 정리

  • GetEnumerator()는 배열뿐 아니라 List, Dictionary 등 대부분의 .NET 컬렉션에서 지원하는 표준 인터페이스입니다.
  • foreach 문이 내부적으로 GetEnumerator()를 호출해 동작하기 때문에, 두 방식은 본질적으로 같은 원리입니다.
  • 요소를 하나씩 세밀하게 제어하거나 커스텀 순회 로직이 필요할 때 IEnumerator를 직접 다루면 유용합니다.