TUTORIALProgrammingFETCHED

C# 点阵列(BitArray)

C# 点阵列(BitArray) C# 集合 BitArray 是 C# 中用于表示一组位(bit)值的集合。 BitArray 属于 System.Collections 命名空间,主要用于处理二进制数据或进行位操作,相比使用布尔数组(bool[]),BitArray 更加高效,因为它以紧凑的方式存储每个位。 BitArray 类管理一个紧凑型的位值数组,它使用布尔值来表示,其中 true 表示位是开启的(1),false 表..

Updated 7/16/2026

Tutorial detail pages default to noindex.

C# 点阵列(BitArray)

C# 集合 C# 集合

BitArray 是 C# 中用于表示一组位(bit)值的集合。

BitArray 属于 System.Collections 命名空间,主要用于处理二进制数据或进行位操作,相比使用布尔数组(bool[]),BitArray 更加高效,因为它以紧凑的方式存储每个位。

BitArray 类管理一个紧凑型的位值数组,它使用布尔值来表示,其中 true 表示位是开启的(1),false 表示位是关闭的(0)。

当您需要存储位,但是事先不知道位数时,则使用点阵列。您可以使用整型索引从点阵列集合中访问各项,索引从零开始。

BitArray 类的方法和属性

下表列出了 BitArray 类的一些常用的 属性:

属性名称类型描述
Countint获取 BitArray 中的位数(只读)。
Lengthint获取或设置 BitArray 中的位数(支持动态调整大小)。
IsReadOnlybool获取一个值,指示 BitArray 是否为只读(始终为 false)。
SyncRootobject获取一个对象,用于同步对 BitArray 的访问。
IsSynchronizedbool获取一个值,指示对 BitArray 的访问是否同步(线程安全)。
Item[int index]bool获取或设置指定索引处的位的值(通过索引器访问)。

属性访问:

BitArray bits = new BitArray(8);
Console.WriteLine(bits.Length); // 输出:8
bits.Length = 10; // 修改长度为 10

下表列出了 BitArray 类的一些常用的 方法:

方法名称返回类型描述
And(BitArray)BitArray按位与操作,将两个 BitArray 对应位进行与运算,并返回结果。
Or(BitArray)BitArray按位或操作,将两个 BitArray 对应位进行或运算,并返回结果。
Xor(BitArray)BitArray按位异或操作,将两个 BitArray 对应位进行异或运算,并返回结果。
Not()BitArray按位取反操作,将 BitArray 的每个位取反,并返回结果。
Set(int index, bool value)void将指定索引处的位设置为指定值(true 或 false)。
SetAll(bool value)void将所有位设置为指定值(true 或 false)。
Get(int index)bool获取指定索引处的位的值。
Clone()object创建当前 BitArray 的浅表副本(复制)。
CopyTo(Array array, int index)void将 BitArray 的内容复制到指定的数组,从指定索引开始。
Equals(object obj)bool确定指定对象是否等于当前 BitArray。
GetEnumerator()IEnumerator返回一个枚举器,用于循环访问 BitArray 中的位。

方法使用:

BitArray bits = new BitArray(8, false); // 创建 8 位数组,全部为 false
bits.Set(0, true); // 设置第 0 位为 true
Console.WriteLine(bits.Get(0)); // 输出:True
bits.SetAll(true); // 全部设置为 true

实例

下面的实例演示了点阵列(BitArray)的使用:

实例

using System;
using System.Collections;

namespace CollectionsApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            // 初始化两个 BitArray,用于存储二进制位
            BitArray ba1 = new BitArray(new byte[] { 60 }); // 60 = 00111100
            BitArray ba2 = new BitArray(new byte[] { 13 }); // 13 = 00001101

            // 输出 ba1 和 ba2 的内容
            Console.WriteLine("Bit array ba1 (60):");
            PrintBitArray(ba1);

            Console.WriteLine("Bit array ba2 (13):");
            PrintBitArray(ba2);

            // 进行 AND 操作并输出结果
            BitArray baAnd = ba1.And(ba2); // 60 & 13 = 12
            Console.WriteLine("Bit array after AND operation (12):");
            PrintBitArray(baAnd);

            // 进行 OR 操作并输出结果
            BitArray baOr = ba1.Or(ba2); // 60 | 13 = 61
            Console.WriteLine("Bit array after OR operation (61):");
            PrintBitArray(baOr);

            Console.ReadKey();
        }

        // 输出 BitArray 的值
        static void PrintBitArray(BitArray bitArray)
        {
            foreach (bool bit in bitArray)
            {
                Console.Write($"{(bit ? 1 : 0)} ");
            }
            Console.WriteLine("\n");
        }
    }
}

当上面的代码被编译和执行时,它会产生下列结果:

Bit array ba1 (60):
0 0 1 1 1 1 0 0 

Bit array ba2 (13):
1 1 0 1 0 0 0 0 

Bit array after AND operation (12):
0 0 0 1 0 0 0 0 

Bit array after OR operation (61):
1 1 1 1 1 1 0 0 

C# 集合 C# 集合