C#의 ArrayList에서 특정 범위의 요소에 대한 열거자(Enumerator)를 가져오려면 GetEnumerator(int index, int count) 메서드를 사용합니다. 이 메서드는 지정한 인덱스부터 시작하여 지정한 개수만큼의 요소를 순회하는 열거자를 반환하며, 전체 컬렉션이 아닌 필요한 부분만 효율적으로 처리할 수 있게 해줍니다.
예제 1: 숫자 요소 순회하기
다음 예제에서는 정수 5개가 저장된 ArrayList에서 인덱스 1부터 3개의 요소에 대한 열거자를 가져와 출력합니다.
using System;
using System.Collections;
public class Demo {
public static void Main() {
ArrayList arrList = new ArrayList();
arrList.Add(100);
arrList.Add(200);
arrList.Add(300);
arrList.Add(400);
arrList.Add(500);
Console.WriteLine("범위 내 요소 출력...");
IEnumerator demoEnum = arrList.GetEnumerator(1, 3);
while (demoEnum.MoveNext()) {
Object ob = demoEnum.Current;
Console.WriteLine(ob);
}
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
범위 내 요소 출력... 200 300 400
인덱스 1부터 시작해 3개의 요소인 200, 300, 400이 순서대로 출력된 것을 확인할 수 있습니다.
예제 2: 문자열 요소로 여러 범위 순회하기
이번에는 문자열 요소를 가진 ArrayList에서 서로 다른 두 개의 범위를 지정해 열거자를 사용하는 예제입니다.
using System;
using System.Collections;
public class Demo {
public static void Main() {
ArrayList arrList = new ArrayList();
arrList.Add("Andy");
arrList.Add("Katie");
arrList.Add("Taylor");
arrList.Add("Steve");
arrList.Add("Nathan");
arrList.Add("Carl");
arrList.Add("Mark");
arrList.Add("Amy");
arrList.Add("Jacob");
arrList.Add("John");
Console.WriteLine("범위 내 요소 출력...");
IEnumerator demoEnum = arrList.GetEnumerator(1, 3);
while (demoEnum.MoveNext()) {
Object ob = demoEnum.Current;
Console.WriteLine(ob);
}
Console.WriteLine("범위 내 요소 출력...");
demoEnum = arrList.GetEnumerator(3, 5);
while (demoEnum.MoveNext()) {
Object ob = demoEnum.Current;
Console.WriteLine(ob);
}
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
범위 내 요소 출력... Katie Taylor Steve 범위 내 요소 출력... Steve Nathan Carl Mark Amy
첫 번째 호출은 인덱스 1부터 3개의 요소(Katie, Taylor, Steve)를, 두 번째 호출은 인덱스 3부터 5개의 요소(Steve, Nathan, Carl, Mark, Amy)를 순회합니다.
핵심 포인트 정리
GetEnumerator(int index, int count): 시작 인덱스와 요소 개수를 지정해 해당 범위만 순회하는 열거자를 반환합니다.MoveNext(): 열거자를 다음 요소로 이동시키며, 더 이상 요소가 없으면 false를 반환합니다.Current: 현재 위치의 요소를 가져옵니다.- 인덱스는 0부터 시작하므로, 첫 번째 요소를 건너뛰고 싶다면 인덱스 1부터 지정하면 됩니다.