C# 點(diǎn)陣列(BitArray)

C# 集合 C# 集合

BitArray 類管理一個(gè)緊湊型的位值數(shù)組,它使用布爾值來表示,其中 true 表示位是開啟的(1),false 表示位是關(guān)閉的(0)。

當(dāng)您需要存儲(chǔ)位,但是事先不知道位數(shù)時(shí),則使用點(diǎn)陣列。您可以使用整型索引從點(diǎn)陣列集合中訪問各項(xiàng),索引從零開始。

BitArray 類的方法和屬性

下表列出了 BitArray 類的一些常用的 屬性

屬性描述
Count獲取 BitArray 中包含的元素個(gè)數(shù)。
IsReadOnly獲取一個(gè)值,表示 BitArray 是否只讀。
Item獲取或設(shè)置 BitArray 中指定位置的位的值。
Length獲取或設(shè)置 BitArray 中的元素個(gè)數(shù)。

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

序號(hào)方法名 & 描述
1public BitArray And( BitArray value );
對(duì)當(dāng)前的 BitArray 中的元素和指定的 BitArray 中的相對(duì)應(yīng)的元素執(zhí)行按位與操作。
2public bool Get( int index );
獲取 BitArray 中指定位置的位的值。
3public BitArray Not();
把當(dāng)前的 BitArray 中的位值反轉(zhuǎn),以便設(shè)置為 true 的元素變?yōu)?false,設(shè)置為 false 的元素變?yōu)?true。
4public BitArray Or( BitArray value );
對(duì)當(dāng)前的 BitArray 中的元素和指定的 BitArray 中的相對(duì)應(yīng)的元素執(zhí)行按位或操作。
5public void Set( int index, bool value );
把 BitArray 中指定位置的位設(shè)置為指定的值。
6public void SetAll( bool value );
把 BitArray 中的所有位設(shè)置為指定的值。
7public BitArray Xor( BitArray value );
對(duì)當(dāng)前的 BitArray 中的元素和指定的 BitArray 中的相對(duì)應(yīng)的元素執(zhí)行按位異或操作。

實(shí)例

下面的實(shí)例演示了點(diǎn)陣列(BitArray)的使用:

using System;
using System.Collections;

namespace CollectionsApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建兩個(gè)大小為 8 的點(diǎn)陣列
            BitArray ba1 = new BitArray(8);
            BitArray ba2 = new BitArray(8);
            byte[] a = { 60 };
            byte[] b = { 13 };
            
            // 把值 60 和 13 存儲(chǔ)到點(diǎn)陣列中
            ba1 = new BitArray(a);
            ba2 = new BitArray(b);

            // ba1 的內(nèi)容
            Console.WriteLine("Bit array ba1: 60");
            for (int i = 0; i < ba1.Count; i++)
            {
                Console.Write("{0, -6} ", ba1[i]);
            }
            Console.WriteLine();
            
            // ba2 的內(nèi)容
            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);

            // ba3 的內(nèi)容
            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);
            // ba3 的內(nèi)容
            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();
        }
    }
}

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:

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 

C# 集合 C# 集合