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

C# StringCollection 클래스 완벽 정리: 주요 속성, 메서드와 실전 예제

C#의 StringCollection 클래스는 System.Collections.Specialized 네임스페이스에 속한 컬렉션으로, 문자열(string) 요소들을 효율적으로 저장하고 관리할 수 있도록 설계되었습니다. 일반적인 ArrayList와 달리 문자열 전용으로 최적화되어 있어, 타입 안정성을 유지하면서 다양한 컬렉션 작업을 수행할 수 있습니다.

StringCollection 클래스의 주요 속성

StringCollection 클래스가 제공하는 대표적인 속성은 다음과 같습니다.

번호속성 및 설명
1Count
StringCollection에 포함된 문자열 요소의 총 개수를 가져옵니다.
2IsReadOnly
StringCollection이 읽기 전용인지 여부를 나타내는 값을 가져옵니다.
3IsSynchronized
StringCollection에 대한 액세스가 동기화되어 있는지(스레드로부터 안전한지) 여부를 나타내는 값을 가져옵니다.
4Item[Int32]
지정된 인덱스 위치의 요소를 가져오거나 설정합니다.
5SyncRoot
StringCollection에 대한 액세스를 동기화하는 데 사용할 수 있는 객체를 가져옵니다.

StringCollection 클래스의 주요 메서드

StringCollection 클래스에서 자주 사용되는 메서드는 다음과 같습니다.

번호메서드 및 설명
1Add(String)
StringCollection의 끝에 문자열을 추가합니다.
2AddRange(String[])
문자열 배열의 모든 요소를 StringCollection의 끝에 복사하여 추가합니다.
3Clear()
StringCollection에서 모든 문자열 요소를 제거합니다.
4Contains(String)
지정된 문자열이 StringCollection에 포함되어 있는지 확인합니다.
5CopyTo(String[], Int32)
대상 배열의 지정된 인덱스부터 시작하여, 전체 StringCollection 값을 1차원 문자열 배열에 복사합니다.
6Equals(Object)
지정된 객체가 현재 객체와 같은지 여부를 판단합니다.
(Object 클래스에서 상속됨)
7GetEnumerator()
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) 등 컬렉션 조작에 필요한 핵심 기능을 모두 갖추고 있으며, 문자열 목록을 관리하는 다양한 상황에서 활용도가 높습니다.