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

C#에서 열거자(Enumerator)로 BitArray 반복하는 방법

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 문으로 각 요소를 순서대로 처리하는 것이 가장 일반적인 방법입니다. 인덱스를 직접 사용하지 않고도 전체 비트 값을 편리하게 조회할 수 있으므로, 비트 단위 데이터를 다룰 때 유용하게 활용할 수 있습니다.