C#에서 BitArray 요소를 배열로 복사하기
C#에서 BitArray의 요소를 일반 배열(Array)로 복사하려면 CopyTo() 메서드를 사용합니다. 이 메서드는 BitArray에 저장된 비트 값을 지정한 대상 배열의 특정 인덱스부터 순서대로 복사해 줍니다.
CopyTo() 메서드의 기본 형식은 다음과 같습니다.
BitArray.CopyTo(Array array, int index);
- array : BitArray의 요소가 복사될 대상 배열 (반드시 1차원 배열이어야 합니다)
- index : 복사가 시작될 대상 배열의 인덱스
예제 1
다음은 BitArray의 요소를 bool 배열로 복사하는 기본적인 예제입니다.
using System;
using System.Collections;
public class Demo {
public static void Main() {
BitArray arr = new BitArray(2);
arr[0] = false;
arr[1] = true;
Console.WriteLine("BitArray의 요소...");
foreach (bool res in arr) {
Console.WriteLine(res);
}
bool[] boolArr = new bool[2];
boolArr[0] = true;
boolArr[1] = false;
arr.CopyTo(boolArr, 0);
Console.WriteLine("\n배열...");
foreach (Object obj in boolArr) {
Console.WriteLine(obj);
}
}
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
BitArray의 요소...
False
True
배열...
False
True
실행 결과를 보면, 처음에 bool 배열에 직접 할당했던 값(true, false)이 CopyTo() 호출 이후 BitArray의 값(false, true)으로 덮어써진 것을 확인할 수 있습니다.
예제 2
이번에는 BitArray(5개 요소)를 더 큰 크기의 배열(10개 요소)에 복사하는 예제입니다. 대상 배열이 BitArray보다 클 경우, 복사되지 않은 나머지 영역은 기본값인 false로 유지됩니다.
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의 요소...");
foreach (bool res in arr) {
Console.WriteLine(res);
}
bool[] boolArr = new bool[10];
boolArr[0] = true;
boolArr[1] = false;
arr.CopyTo(boolArr, 0);
Console.WriteLine("\n배열...");
foreach (Object obj in boolArr) {
Console.WriteLine(obj);
}
}
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
BitArray의 요소...
False
True
False
True
True
배열...
False
True
False
True
True
False
False
False
False
False
앞의 5개 요소는 BitArray의 값으로 덮어써지고, 나머지 5개 요소는 bool 배열의 기본값인 false가 그대로 유지되는 것을 확인할 수 있습니다.
주요 포인트 정리
CopyTo()는 BitArray의 전체 요소를 대상 배열로 복사하며, 부분 복사는 지원하지 않습니다.- 대상 배열은 반드시 1차원 배열이어야 하며, 다차원 배열을 지정하면
ArgumentException이 발생합니다. - 대상 배열의 남은 공간이 BitArray의 요소 수보다 작으면 역시
ArgumentException이 발생합니다. - 복사 시작 위치를 인덱스로 지정할 수 있으므로, 배열의 원하는 지점부터 복사하는 것도 가능합니다.
- bool 배열 외에도
int[],byte[]타입의 배열로 복사할 수 있습니다.