19.2.6 BitArray
BitArray类实现了一个位结构,它是一个二进制位(0和1)的集合。BitArray的值表示true或者false,true表示位打开(1),false表示位关闭(0)。BitArray实现了ICollection和IEnumerable接口,如图19-16所示。
图 19-16 BitArray类图
BitArray的一些特性如下:
❑BitArray集合不支持动态调整,因此没有Add和Remove方法;
❑若需要调整集合的大小,可通过设置属性Length的值来实现;
❑集合中的索引从0开始;
❑使用BitArray(int length)构造函数初始化BitArray集合后,其值均为false;
❑BitArray集合之间支持按位“或”运算、“异或”运算和“与”运算,参与这三类运算的两个BitArray集合长度必须相等,否则将抛出ArgumentException异常。
BitArray的构造函数有6个,它还有一个私有的不带参数的默认构造函数。这6个构造函数分别是:
❑BitArray(BitArray bits):从指定的BitArray复制的位值;
❑BitArray(bool[]values):从指定的布尔值数组复制的位值;
❑BitArray(byte[]bytes):从指定的字节数组复制的位值;
❑BitArray(int[]values):从指定的32位整数数组复制的位值;
❑BitArray(int length):使用指定数目初始化BitArray的新实例,位值最初设置为false;
❑BitArray(int length,bool defaultValue):使用指定数目初始化BitArray的新实例,位值最初设置为指定的值。
BitArray集合的一些主要方法如表19-6所示。
代码清单19-6 演示了BitArray集合的使用,先实例化了一个具有6个值的BitArray实例bits,此时这6个值的初始值均为false。
代码清单19-6 BitArray示例代码
using System;
using System.Collections;
namespace ProgrammingCSharp4
{
class CollectionSample
{
public static void Main()
{
BitArray bits=new BitArray(5);
PrintBits(bits);
bits.Set(0,true);
bits[1]=true;
bits[2]=false;
bits[3]=true;
bits[4]=false;
bits.Length=7;
bits[5]=true;
bits[6]=true;
Console.WriteLine();
PrintBits(bits);
}
private static void PrintBits(BitArray bits)
{
int index=0;
foreach(bool bit in bits)
{
Console.WriteLine("bit of index{0}is:{1}",index++,bit);
}
}
}
}