BitArray ให้ property indexer [int index] และเมธอด Get(int index) / Set(int index, bool value) สำหรับเข้าถึงบิตแต่ละตำแหน่ง (0-based) โดยตรง
ตัวอย่างโค้ดที่ 1: ตั้งค่าและอ่านบิต
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 length = " + arr1.Length);
Console.WriteLine("BitArray1 first element = " + arr1.Get(0));
arr2[0] = false;
arr2[1] = true;
Console.WriteLine("\nBitArray2 length = " + arr2.Length);
Console.WriteLine("Elements in BitArray2...");
foreach (bool res in arr2)
{
Console.WriteLine(res);
}
Console.WriteLine("\nIs BitArray1 equal to BitArray2? = " + arr2.Equals(arr1));
}
}
ผลลัพธ์
BitArray1 length = 2
BitArray1 first element = False
BitArray2 length = 2
Elements in BitArray2...
False
True
Is BitArray1 equal to BitArray2? = False
ตัวอย่างโค้ดที่ 2: อัปเดตบิตและเปรียบเทียบ
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 length = " + arr1.Length);
Console.WriteLine("BitArray1 first element = " + arr1.Get(0));
// อัปเดตบิต index 0
arr1[0] = true;
Console.WriteLine("BitArray1 first element [UPDATED] = " + arr1.Get(0));
arr2[0] = false;
arr2[1] = true;
Console.WriteLine("\nBitArray2 length = " + arr2.Length);
Console.WriteLine("Elements in BitArray2...");
foreach (bool res in arr2)
{
Console.WriteLine(res);
}
Console.WriteLine("\nIs BitArray1 equal to BitArray2? = " + arr2.Equals(arr1));
}
}
ผลลัพธ์
BitArray1 length = 2
BitArray1 first element = False
BitArray1 first element [UPDATED] = True
BitArray2 length = 2
Elements in BitArray2...
False
True
Is BitArray1 equal to BitArray2? = False
เมธอดและ Property สำคัญของ BitArray
| Member | ประเภท | คำอธิบาย |
|---|---|---|
[int index] | Indexer (get/set) | อ่าน/เขียนบิตที่ index (bool) |
Get(int index) | Method | อ่านบิตที่ index (เหมือน indexer get) |
Set(int index, bool value) | Method | ตั้งค่าบิตที่ index (เหมือน indexer set) |
Length | Property | จำนวนบิตทั้งหมด |
Count | Property | เหมือน Length (สำหรับ ICollection) |
การดำเนินการบิตวایز (Bitwise Operations)
And(BitArray)- ANDOr(BitArray)- ORXor(BitArray)- XORNot()- NOT (กลับค่าทุกบิต)
ทั้งหมด แก้ไขอินสแตนซ์ปัจจุบัน (mutate) และคืนค่า this
ข้อควรระวัง
- Index ต้องอยู่ในช่วง
0 <= index < Lengthมิฉะนั้นโยนIndexOutOfRangeException Equals()เปรียบเทียบ reference ไม่ใช่ค่า - ใช้Cast<bool>().SequenceEqual()(LINQ) เพื่อเปรียบเทียบค่า- BitArray ประหยัดหน่วยความจำ - 1 บิตต่อค่า (vs 1 ไบต์ของ bool[])
- ไม่รองรับการ resize - ต้องสร้างใหม่หากต้องการขนาดต่างกัน