C#의 StringCollection 클래스는 System.Collections.Specialized 네임스페이스에 속한 컬렉션으로, 문자열(string) 요소들을 효율적으로 저장하고 관리할 수 있도록 설계되었습니다. 일반적인 ArrayList와 달리 문자열 전용으로 최적화되어 있어, 타입 안정성을 유지하면서 다양한 컬렉션 작업을 수행할 수 있습니다.
StringCollection 클래스의 주요 속성
StringCollection 클래스가 제공하는 대표적인 속성은 다음과 같습니다.
| 번호 | 속성 및 설명 |
|---|---|
| 1 | Count StringCollection에 포함된 문자열 요소의 총 개수를 가져옵니다. |
| 2 | IsReadOnly StringCollection이 읽기 전용인지 여부를 나타내는 값을 가져옵니다. |
| 3 | IsSynchronized StringCollection에 대한 액세스가 동기화되어 있는지(스레드로부터 안전한지) 여부를 나타내는 값을 가져옵니다. |
| 4 | Item[Int32] 지정된 인덱스 위치의 요소를 가져오거나 설정합니다. |
| 5 | SyncRoot StringCollection에 대한 액세스를 동기화하는 데 사용할 수 있는 객체를 가져옵니다. |
StringCollection 클래스의 주요 메서드
StringCollection 클래스에서 자주 사용되는 메서드는 다음과 같습니다.
| 번호 | 메서드 및 설명 |
|---|---|
| 1 | Add(String) StringCollection의 끝에 문자열을 추가합니다. |
| 2 | AddRange(String[]) 문자열 배열의 모든 요소를 StringCollection의 끝에 복사하여 추가합니다. |
| 3 | Clear() StringCollection에서 모든 문자열 요소를 제거합니다. |
| 4 | Contains(String) 지정된 문자열이 StringCollection에 포함되어 있는지 확인합니다. |
| 5 | CopyTo(String[], Int32) 대상 배열의 지정된 인덱스부터 시작하여, 전체 StringCollection 값을 1차원 문자열 배열에 복사합니다. |
| 6 | Equals(Object) 지정된 객체가 현재 객체와 같은지 여부를 판단합니다. (Object 클래스에서 상속됨) |
| 7 | GetEnumerator() StringCollection을 순회(iterate)할 수 있는 StringEnumerator를 반환합니다. |
이제 실제 예제를 통해 StringCollection 클래스의 활용 방법을 살펴보겠습니다.
예제 1: 두 StringCollection 객체가 같은지 확인하기
두 개의 StringCollection 객체가 서로 동일한지 비교하려면 Equals() 메서드를 사용할 수 있습니다.
using System;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
StringCollection strCol1 = new StringCollection();
strCol1.Add("Accessories");
strCol1.Add("Books");
strCol1.Add("Electronics");
Console.WriteLine("StringCollection1 요소들...");
foreach (string res in strCol1) {
Console.WriteLine(res);
}
StringCollection strCol2 = new StringCollection();
strCol2.Add("Accessories");
strCol2.Add("Books");
strCol2.Add("Electronics");
Console.WriteLine("StringCollection2 요소들...");
foreach (string res in strCol2) {
Console.WriteLine(res);
}
Console.WriteLine("두 StringCollection은 같은가? = " + strCol1.Equals(strCol2));
}
}
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
StringCollection1 요소들...
Accessories
Books
Electronics
StringCollection2 요소들...
Accessories
Books
Electronics
두 StringCollection은 같은가? = False
참고: 두 컬렉션이 내용상으로는 동일해 보여도 Equals() 메서드는 참조(객체 자체)의 동일성을 비교하기 때문에 결과가 False로 반환됩니다. 내용 기준으로 비교하려면 요소를 하나씩 직접 비교해야 합니다.
예제 2: 특정 문자열이 StringCollection에 포함되어 있는지 확인하기
특정 문자열이 StringCollection 안에 존재하는지 확인하려면 Contains() 메서드를 사용합니다.
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"));
}
}
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
배열 요소들...
100
200
300
400
500
StringCollection에 지정된 문자열이 있습니까? = False
위 예제에서 컬렉션에는 "100"부터 "500"까지의 값만 추가되었으므로, "800"을 검색한 Contains() 메서드의 결과는 False입니다. 만약 컬렉션에 존재하는 값(예: "300")을 검색했다면 True가 반환됩니다.
마무리
StringCollection 클래스는 문자열 데이터를 다룰 때 편리하게 사용할 수 있는 전용 컬렉션입니다. 요소 추가(Add, AddRange), 검색(Contains), 삭제(Clear) 등 컬렉션 조작에 필요한 핵심 기능을 모두 갖추고 있으며, 문자열 목록을 관리하는 다양한 상황에서 활용도가 높습니다.