Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

ตรวจสอบว่า BitArray เป็น Read-Only หรือไม่ใน C#

ภาพรวม

คุณสมบัติ 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() สำหรับเปรียบเทียบเนื้อหา