StringCollection은 문자열 전용으로 최적화된 컬렉션 클래스로, System.Collections.Specialized 네임스페이스에 포함되어 있습니다. 이 컬렉션의 요소를 하나씩 순회하려면 GetEnumerator() 메서드를 호출하여 StringEnumerator 타입의 열거자를 가져온 뒤, MoveNext()와 Current 속성을 활용하면 됩니다.
주요 메서드 및 속성
- GetEnumerator(): StringCollection을 순회할 수 있는 StringEnumerator 객체를 반환합니다.
- MoveNext(): 열거자를 다음 요소로 이동시키며, 이동에 성공하면 true, 마지막 요소를 지나면 false를 반환합니다.
- Current: 현재 열거자가 가리키고 있는 요소를 반환합니다.
예제 1
다음은 배열의 요소를 StringCollection에 추가한 후, 열거자를 사용해 순회하는 예제입니다.
using System;
using System.Collections.Specialized;
public class Demo {
public static void Main(){
StringCollection stringCol = new StringCollection();
String[] arr = new String[] { "100", "200", "300", "400", "500" };
Console.WriteLine("배열 요소...");
foreach (string res in arr){
Console.WriteLine(res);
}
stringCol.AddRange(arr);
Console.WriteLine("지정한 문자열이 StringCollection에 존재합니까? = " + stringCol.Contains("800"));
Console.WriteLine("총 요소 개수 = " + stringCol.Count);
Console.WriteLine("StringCollection 순회 결과...");
StringEnumerator myenum = stringCol.GetEnumerator();
while (myenum.MoveNext())
Console.WriteLine(myenum.Current);
}
}
출력 결과
배열 요소...
100
200
300
400
500
지정한 문자열이 StringCollection에 존재합니까? = False
총 요소 개수 = 5
StringCollection 순회 결과...
100
200
300
400
500
예제 2
이번에는 Add() 메서드로 요소를 하나씩 추가한 후, foreach 문과 열거자 두 가지 방식으로 컬렉션을 순회해 보겠습니다.
using System;
using System.Collections.Specialized;
public class Demo {
public static void Main(){
StringCollection stringCol = new StringCollection();
stringCol.Add("10");
stringCol.Add("20");
stringCol.Add("30");
stringCol.Add("40");
stringCol.Add("50");
stringCol.Add("60");
stringCol.Add("70");
stringCol.Add("80");
stringCol.Add("90");
stringCol.Add("100");
Console.WriteLine("컬렉션 요소...");
foreach (string res in stringCol){
Console.WriteLine(res);
}
Console.WriteLine("열거자를 사용한 StringCollection 순회...");
StringEnumerator myenum = stringCol.GetEnumerator();
while (myenum.MoveNext())
Console.WriteLine(myenum.Current);
}
}
출력 결과
컬렉션 요소...
10
20
30
40
50
60
70
80
90
100
열거자를 사용한 StringCollection 순회...
10
20
30
40
50
60
70
80
90
100
위 예제에서 볼 수 있듯이, 열거자를 사용한 순회는 foreach 문과 동일한 결과를 출력합니다. 내부적으로 foreach 문도 열거자 패턴을 사용하기 때문입니다. 단, 열거자를 직접 사용하면 MoveNext()와 Current를 세밀하게 제어할 수 있어 반복 로직을 직접 관리해야 하는 상황에서 유용합니다.