ภาพรวม
คุณสมบัติ BitArray.IsReadOnly เสมอคืนค่า false เพราะ BitArray อนุญาตให้แก้ไขบิตได้ตลอดเวลา (ผ่าน Set, SetAll, หรือดัชนี) ไม่มีโหมด read-only
ตัวอย่างที่ 1: ตรวจสอบ IsReadOnly และ IsSynchronized
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("Elements in BitArray1...");
foreach (bool res in arr1)
{
Console.WriteLine(res);
}
arr2[0] = false;
arr2[1] = true;
Console.WriteLine("Elements in BitArray2...");
foreach (bool res in arr2)
{
Console.WriteLine(res);
}
Console.WriteLine("Is BitArray1 equal to BitArray2? = " + arr2.Equals(arr1));
Console.WriteLine("Is BitArray synchronized? = " + arr2.IsSynchronized);
Console.WriteLine("Is BitArray read-only? = " + arr2.IsReadOnly);
}
}
ผลลัพธ์
Elements in BitArray1...
False
True
Elements in BitArray2...
False
True
Is BitArray1 equal to BitArray2? = False
Is BitArray synchronized? = False
Is BitArray read-only? = False
ตัวอย่างที่ 2: ตรวจสอบ IsReadOnly ของ BitArray สองตัว
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("Elements in BitArray1...");
foreach (bool res in arr1)
{
Console.WriteLine(res);
}
Console.WriteLine("Is BitArray1 read-only? = " + arr1.IsReadOnly);
arr2[0] = true;
arr2[1] = false;
Console.WriteLine("Elements in BitArray2...");
foreach (bool res in arr2)
{
Console.WriteLine(res);
}
Console.WriteLine("Is BitArray1 equal to BitArray2? = " + arr2.Equals(arr1));
Console.WriteLine("Is BitArray2 read-only? = " + arr2.IsReadOnly);
}
}
ผลลัพธ์
Elements in BitArray1...
False
True
Is BitArray1 read-only? = False
Elements in BitArray2...
True
False
Is BitArray1 equal to BitArray2? = False
Is BitArray2 read-only? = False
คำอธิบายเพิ่มเติม
IsReadOnlyเสมอเป็น false สำหรับ BitArray ทุกอินสแตนซ์IsSynchronizedเสมอเป็น false BitArray ไม่ได้เป็น thread-safe โดยค่าเริ่มต้น- หากต้องการ thread-safe ให้ใช้
lockรอบการเข้าถึง BitArray หรือใช้ concurrent collections Equals()เปรียบเทียบอ้างอิง ไม่ใช่ค่า ใช้Cast<bool>().SequenceEqual()สำหรับเปรียบเทียบเนื้อหา