C#에서는 IsReadOnly 속성을 사용하여 BitArray가 읽기 전용인지 여부를 간단하게 확인할 수 있습니다. 이 속성은 해당 컬렉션이 읽기 전용이면 true, 수정 가능하면 false를 반환합니다. 일반적으로 new 키워드로 생성한 BitArray는 항상 쓰기가 가능하기 때문에 이 속성은 false를 반환합니다.
예제 1
다음은 두 개의 BitArray를 생성하고 IsReadOnly 속성을 확인하는 코드입니다.
using System;
using System.Collections;
public class Demo {
public static void Main() {
BitArray arr1 = new BitArray(2);
BitArray arr2 = new BitArray(2);
arr1[0] = false;
arr1[1] = true;
Console.WriteLine("BitArray1의 요소...");
foreach (bool res in arr1) {
Console.WriteLine(res);
}
arr2[0] = false;
arr2[1] = true;
Console.WriteLine("BitArray2의 요소...");
foreach (bool res in arr2) {
Console.WriteLine(res);
}
Console.WriteLine("BitArray1과 BitArray2가 같습니까? = " + arr2.Equals(arr1));
Console.WriteLine("BitArray가 동기화되어 있습니까? = " + arr2.IsSynchronized);
Console.WriteLine("BitArray가 읽기 전용입니까? = " + arr2.IsReadOnly);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
BitArray1의 요소... False True BitArray2의 요소... False True BitArray1과 BitArray2가 같습니까? = False BitArray가 동기화되어 있습니까? = False BitArray가 읽기 전용입니까? = False
예제 2
이번에는 서로 다른 값으로 초기화된 BitArray에 대해 IsReadOnly 속성을 확인해 보겠습니다.
using System;
using System.Collections;
public class Demo {
public static void Main() {
BitArray arr1 = new BitArray(2);
BitArray arr2 = new BitArray(2);
arr1[0] = false;
arr1[1] = true;
Console.WriteLine("BitArray1의 요소...");
foreach (bool res in arr1) {
Console.WriteLine(res);
}
Console.WriteLine("BitArray1이 읽기 전용입니까? = " + arr1.IsReadOnly);
arr2[0] = true;
arr2[1] = false;
Console.WriteLine("BitArray2의 요소...");
foreach (bool res in arr2) {
Console.WriteLine(res);
}
Console.WriteLine("BitArray1과 BitArray2가 같습니까? = " + arr2.Equals(arr1));
Console.WriteLine("BitArray2가 읽기 전용입니까? = " + arr2.IsReadOnly);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
BitArray1의 요소... False True BitArray1이 읽기 전용입니까? = False BitArray2의 요소... True False BitArray1과 BitArray2가 같습니까? = False BitArray2가 읽기 전용입니까? = False
정리
위 예제에서 볼 수 있듯이, BitArray 클래스의 IsReadOnly 속성은 컬렉션이 읽기 전용인지 판별하는 데 사용됩니다. 참고로 Equals 메서드는 두 BitArray 객체가 동일한 인스턴스인지를 비교하며, 내부 비트 값이 같더라도 별도로 생성된 객체라면 false를 반환합니다. 또한 IsSynchronized 속성은 해당 컬렉션에 대한 접근이 스레드로부터 안전하게 동기화되어 있는지를 나타냅니다.