C#에서 BitArray는 비트 값(true/false)을 저장하는 특수한 컬렉션 클래스입니다. 이 컬렉션의 요소를 순회하려면 열거자(Enumerator)를 활용할 수 있습니다. BitArray는 IEnumerable 인터페이스를 구현하고 있으므로, 별도의 변환 없이 foreach 문을 사용해 각 비트 값을 손쉽게 읽어올 수 있습니다.
다음은 열거자를 사용하여 BitArray를 반복하는 코드입니다.
예제 1
using System;
using System.Collections;
public class Demo {
public static void Main(){
BitArray arr1 = new BitArray(5);
BitArray arr2 = new BitArray(5);
arr1[0] = false;
arr1[1] = true;
arr1[2] = false;
arr1[3] = true;
arr1[4] = true;
Console.WriteLine("BitArray1을 반복하는 열거자");
IEnumerable demoEnum = arr1;
foreach(Object ob in demoEnum){
Console.WriteLine(ob);
}
arr2[0] = true;
arr2[1] = true;
arr2[2] = true;
arr2[3] = false;
arr2[4] = true;
Console.WriteLine("BitArray2를 반복하는 열거자");
demoEnum = arr2;
foreach(Object ob in demoEnum){
Console.WriteLine(ob);
}
Console.WriteLine("BitArray1과 BitArray2가 같은가요? = "+arr1.Equals(arr2));
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
BitArray1을 반복하는 열거자 False True False True True BitArray2를 반복하는 열거자 True True True False True BitArray1과 BitArray2가 같은가요? = False
위 예제에서는 두 개의 BitArray 객체를 생성하고 각 인덱스에 비트 값을 할당한 뒤, IEnumerable 타입 변수에 담아 foreach 문으로 순회했습니다. 마지막에는 Equals() 메서드를 통해 두 배열의 내용이 동일한지 비교했으며, 두 배열의 비트 패턴이 서로 다르기 때문에 False가 반환된 것을 확인할 수 있습니다.
예제 2
이번에는 하나의 BitArray만 사용하는 더 간단한 예제를 살펴보겠습니다.
using System;
using System.Collections;
public class Demo {
public static void Main(){
BitArray arr = new BitArray(5);
arr[0] = false;
arr[1] = true;
arr[2] = false;
arr[3] = true;
arr[4] = true;
Console.WriteLine("BitArray를 반복하는 열거자");
IEnumerable demoEnum = arr;
foreach(Object ob in demoEnum){
Console.WriteLine(ob);
}
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
BitArray를 반복하는 열거자 False True False True True
정리
BitArray를 반복할 때는 IEnumerable 인터페이스를 통해 열거자를 얻고, foreach 문으로 각 요소를 순서대로 처리하는 것이 가장 일반적인 방법입니다. 인덱스를 직접 사용하지 않고도 전체 비트 값을 편리하게 조회할 수 있으므로, 비트 단위 데이터를 다룰 때 유용하게 활용할 수 있습니다.