C#의 컬렉션(Collection) 클래스는 요소에 메모리를 동적으로 할당하거나, 인덱스를 기반으로 항목 목록에 접근하는 등 프로그래밍에서 데이터를 효율적으로 관리하기 위한 다양한 기능을 제공합니다. 이러한 클래스들은 System.Collections 네임스페이스에 포함되어 있으며, 상황에 맞게 적절한 컬렉션을 선택하면 코드의 성능과 가독성을 크게 향상시킬 수 있습니다.
C#의 주요 컬렉션 클래스
다음은 C#에서 자주 사용되는 대표적인 컬렉션 클래스입니다.
| 번호 | 클래스 및 설명 |
|---|---|
| 1 | ArrayList 개별적으로 인덱싱할 수 있는 순서 있는 객체 컬렉션을 나타냅니다. 크기가 동적으로 늘어나므로 요소 개수가 가변적인 경우에 유용합니다. |
| 2 | Hashtable 키(Key)를 사용하여 컬렉션 내 요소에 접근합니다. 키-값 쌍으로 데이터를 저장하며 빠른 검색이 필요할 때 적합합니다. |
| 3 | SortedList 키와 인덱스를 모두 사용하여 목록의 항목에 접근합니다. 키를 기준으로 자동 정렬되는 것이 특징입니다. |
| 4 | Stack 후입선출(LIFO, Last-In First-Out) 방식의 객체 컬렉션을 나타냅니다. 마지막에 넣은 요소가 가장 먼저 나옵니다. |
| 5 | Queue 선입선출(FIFO, First-In First-Out) 방식의 객체 컬렉션을 나타냅니다. 먼저 넣은 요소가 가장 먼저 나옵니다. |
| 6 | BitArray 1과 0의 값으로 이루어진 비트(bit) 단위 배열을 나타냅니다. 불리언 값 집합을 메모리 효율적으로 저장할 때 사용됩니다. |
BitArray 클래스 활용 예제
그럼 C#에서 BitArray 클래스를 사용하는 실제 예제를 살펴보겠습니다. 아래 코드는 두 개의 비트 배열을 생성하고, AND 및 OR 비트 연산을 수행한 결과를 출력합니다.
예제 코드
using System;
using System.Collections;
namespace CollectionsApplication {
class Program {
static void Main(string[] args) {
// 크기가 8인 두 개의 비트 배열 생성
BitArray ba1 = new BitArray(8);
BitArray ba2 = new BitArray(8);
byte[] a = { 60 };
byte[] b = { 13 };
// 값 60과 13을 비트 배열에 저장
ba1 = new BitArray(a);
ba2 = new BitArray(b);
// ba1의 내용 출력
Console.WriteLine("Bit array ba1: 60");
for (int i = 0; i < ba1.Count; i++) {
Console.Write("{0, -6} ", ba1[i]);
}
Console.WriteLine();
// ba2의 내용 출력
Console.WriteLine("Bit array ba2: 13");
for (int i = 0; i < ba2.Count; i++) {
Console.Write("{0, -6} ", ba2[i]);
}
Console.WriteLine();
BitArray ba3 = new BitArray(8);
ba3 = ba1.And(ba2);
// AND 연산 결과 출력
Console.WriteLine("Bit array ba3 after AND operation: 12");
for (int i = 0; i < ba3.Count; i++) {
Console.Write("{0, -6} ", ba3[i]);
}
Console.WriteLine();
ba3 = ba1.Or(ba2);
// OR 연산 결과 출력
Console.WriteLine("Bit array ba3 after OR operation: 61");
for (int i = 0; i < ba3.Count; i++) {
Console.Write("{0, -6} ", ba3[i]);
}
Console.WriteLine();
Console.ReadKey();
}
}
}실행 결과
Bit array ba1: 60 False False True True True True False False Bit array ba2: 13 True False True True False False False False Bit array ba3 after AND operation: 12 False False True True False False False False Bit array ba3 after OR operation: 61 True False True True False False False False
예제 해설
위 예제에서 값 60은 이진수로 00111100, 값 13은 00001101로 표현됩니다.
- AND 연산(60 & 13): 두 비트가 모두 True일 때만 True가 되므로 결과는
00001100, 즉 십진수 12입니다. - OR 연산(60 | 13): 두 비트 중 하나라도 True이면 True가 되므로 결과는
00111101, 즉 십진수 61입니다.
이처럼 BitArray는 비트 단위 논리 연산을 간편하게 처리할 수 있어 플래그 관리, 압축 알고리즘, 권한 비트마스크 처리 등에 유용하게 활용됩니다.