BitArray类管理位值的紧凑数组,它们表示为Boolean,其中true表示位为开(1),而false表示位为关(0)。
当需要存储位但不提前知道位数时,可考虑使用BitArray类。可以通过使用从零开始的整数索引来访问BitArray集合中的项目。
BitArray类的方法和属性
下表列出了BitArray类的一些常用属性:
| 属性 | 说明 | 
|---|---|
| Count | 获取 BitArray中包含的元素数量。 | 
| IsReadOnly | 获取一个值,指示 BitArray是否为只读。 | 
| Item | 获取或设置 BitArray中特定位置的位的值。 | 
| Length | 获取或设置 BitArray中的元素数量。 | 
下表列出了BitArray类的一些常用方法:
| 序号 | 方法 | 描述 | 
|---|---|---|
| 1 | public BitArray And(BitArray value); | 对当前 BitArray中的元素与指定的BitArray中的相应元素执行按位AND运算。 | 
| 2 | public bool Get(int index); | 获取 BitArray中特定位置的位的值。 | 
| 3 | public BitArray Not(); | 反转当前 BitArray中的所有位值,使设置为true的元素更改为false,并将值为false的元素更改为true。 | 
| 4 | public BitArray Or(BitArray value); | 对当前 BitArray中的元素对指定的BitArray中的相应元素执行按位OR运算。 | 
| 5 | public void Set(int index, bool value); | 将 BitArray中指定位置的位设置为指定值。 | 
| 6 | public void SetAll(bool value); | 将 BitArray中的所有位设置为指定值。 | 
| 7 | public BitArray Xor(BitArray value); | BitArray中的元素对指定的BitArray中的相应元素执行逐位OR操作。 | 
例子
以下示例演示了BitArray的用法:
using System;
using System.Collections;
namespace CollectionsApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            //creating two  bit arrays of size 8
            BitArray ba1 = new BitArray(8);
            BitArray ba2 = new BitArray(8);
            byte[] a = { 60 };
            byte[] b = { 13 };
            //storing the values 60, and 13 into the bit arrays
            ba1 = new BitArray(a);
            ba2 = new BitArray(b);
            //content of ba1
            Console.WriteLine("Bit array ba1: 60");
            for (int i = 0; i < ba1.Count; i++)
            {
                Console.Write("{0, -6} ", ba1[i]);
            }
            Console.WriteLine();
            //content of ba2
            Console.WriteLine("Bit array ba2: 13");
            for (int i = 0; i < ba2.Count; i++)
            {
                Console.Write("{0, -6} ", ba2[i]);
            }
            Console.WriteLine();
            BitArray ba3 = new BitArray(8);
            ba3 = ba1.And(ba2);
            //content of ba3
            Console.WriteLine("Bit array ba3 after AND operation: 12");
            for (int i = 0; i < ba3.Count; i++)
            {
                Console.Write("{0, -6} ", ba3[i]);
            }
            Console.WriteLine();
            ba3 = ba1.Or(ba2);
            //content of ba3
            Console.WriteLine("Bit array ba3 after OR operation: 61");
            for (int i = 0; i < ba3.Count; i++)
            {
                Console.Write("{0, -6} ", ba3[i]);
            }
            Console.WriteLine();
            Console.ReadKey();
        }
    }
}
当上述代码被编译并执行时,它产生以下结果:
Bit array ba1: 60 
False False True True True True False False 
Bit array ba2: 13
True False True True False False False False 
Bit array ba3 after AND operation: 12
False False True True False False False False 
Bit array ba3 after OR operation: 61
True False True True False False False False
