19.2.6 BitArray

BitArray类实现了一个位结构,它是一个二进制位(0和1)的集合。BitArray的值表示true或者false,true表示位打开(1),false表示位关闭(0)。BitArray实现了ICollection和IEnumerable接口,如图19-16所示。

19.2.6 BitArray - 图1

图 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.2.6 BitArray - 图2

代码清单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);

}

}

}

}