StringCollection은 문자열만 저장하도록 특화된 .NET 컬렉션 클래스로, System.Collections.Specialized 네임스페이스에 포함되어 있습니다. 이 컬렉션은 인덱서(indexer)를 제공하기 때문에 배열처럼 대괄호([]) 연산자를 사용해 특정 인덱스의 요소를 읽거나 수정할 수 있습니다.
인덱스는 0부터 시작한다는 점에 유의하세요. 즉, 첫 번째 요소의 인덱스는 0이며, 다섯 번째 위치의 요소를 가리키려면 인덱스 4가 아니라 5번째 항목이라는 표현과 함께 정확한 위치를 계산해야 합니다.
예제 1: 지정된 인덱스의 요소 가져오기
다음 예제에서는 StringCollection을 생성하고 문자열 배열을 추가한 뒤, 인덱서를 사용하여 5번째 인덱스의 요소를 조회합니다.
using System;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
StringCollection strCol = new StringCollection();
String[] strArr = new String[] { "A", "B", "C", "D", "E", "F", "G", "H" };
Console.WriteLine("StringCollection 요소...");
foreach (string str in strArr) {
Console.WriteLine(str);
}
strCol.AddRange(strArr);
Console.WriteLine("5번째 인덱스의 요소 = " + strCol[5]);
Console.WriteLine("StringCollection에 저장된 문자열 개수 = " + strCol.Count);
}
}
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
StringCollection 요소... A B C D E F G H 5번째 인덱스의 요소 = F StringCollection에 저장된 문자열 개수 = 8
인덱스 5에 해당하는 값이 F인 것을 확인할 수 있습니다. 또한 Count 속성을 통해 컬렉션에 현재 저장된 총 요소 수(8개)를 확인했습니다.
예제 2: 지정된 인덱스의 요소 설정(수정)하기
인덱서는 값을 읽는 것뿐만 아니라 새로운 값으로 교체하는 데에도 사용할 수 있습니다. 아래 예제에서는 5번째 인덱스의 기존 요소를 조회한 후, 해당 위치의 값을 K로 변경합니다.
using System;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
StringCollection strCol = new StringCollection();
String[] strArr = new String[] { "A", "B", "C", "D", "E", "F", "G", "H" };
Console.WriteLine("StringCollection 요소...");
foreach (string str in strArr) {
Console.WriteLine(str);
}
strCol.AddRange(strArr);
Console.WriteLine("5번째 인덱스의 요소 = " + strCol[5]);
// 인덱서를 사용해 요소 수정
strCol[5] = "K";
Console.WriteLine("수정된 5번째 인덱스의 요소 = " + strCol[5]);
}
}
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
StringCollection 요소... A B C D E F G H 5번째 인덱스의 요소 = F 수정된 5번째 인덱스의 요소 = K
핵심 정리
- 요소 읽기:
strCol[index]형태로 인덱서를 사용하면 지정된 위치의 문자열을 반환받습니다. - 요소 수정:
strCol[index] = value;처럼 대입 연산자를 사용하면 해당 위치의 값이 새 문자열로 교체됩니다. - 주의 사항: 유효 범위를 벗어난 인덱스에 접근하면
ArgumentOutOfRangeException이 발생하므로, 필요하다면Count속성으로 범위를 먼저 확인하는 것이 안전합니다.