如何在.NET?7中使用BitArray
譯文譯者 | 李睿
審校 | 孫淑娟
.NET 7中的BitArray類是一個健壯的數據結構,用于存儲和操作數據位。BitArray中的每個元素只能保存一個表示為false或true的位(0或1),其中false表示位為off (0), true表示位為on(1)。BitArray可以存儲標志或有效地對數據執行按位操作。
本文將討論在C#中使用BitArray以及相關的代碼示例。要使用本文提供的代碼示例,應該在系統中安裝Visual Studio 2022。
在Visual Studio中創建一個控制臺應用程序項目
首先,在Visual Studio中創建一個.NET Core控制臺應用程序項目。假設系統中已經安裝了Visual Studio 2022,按照下面列出的步驟在Visual Studio中創建一個新的.NET Core控制臺應用程序項目。
(1)啟動Visual Studio IDE。
(2)點擊“創建新項目”。
(3)在“創建新項目”窗口中,從顯示的模板列表中選擇“控制臺應用程序(.NET Core)”。
(4)單擊“下一步”。
(5)在接下來顯示的“配置新項目”窗口中,指定新項目的名稱和位置。
(6)單擊“下一步”。
(7)在接下來顯示的“附加信息”窗口中,選擇“.NET Core預覽版)”作為想使用的框架版本。
(8)單擊“創建”。
在本文中,將使用.NET7控制臺應用程序項目與BitArray一起工作。
什么是BitArray?
BitArray是系統中包含的類型。集合名稱空間表示位值的緊湊數組。這些值表示為布爾值,即true和false。在這里,值true表示位是打開的,值false表示位是關閉的。
因為BitArray類位于系統中。集合命名空間,需要在代碼中包含該命名空間的采用指令。BitArray類在系統中聲明。集合命名空間如下所示:
在.NET 7中創建BitArray
可以創建一個特定大小的BitArray,并用所有錯誤值填充它,例如下面給出的代碼段所示:
還可以傳入一個布爾值列表,以創建特定大小的BitArray并設置值。
一旦創建了BitArray,就可以使用索引器訪問和操作每個位。索引器期望一個整數并返回或設置該位的值。
下面的代碼片段可用于創建BitArray,設置其元素的值,然后檢索和顯示BitArray中特定索引的值。
當執行上面的代碼段時,值true和false將顯示在控制臺窗口中,如圖1所示:
圖1
在BitArray中操作位
可以使用BitArray的索引或使用BitArray類的Get和Set方法來操作BitArray中的位。要從BitArray中設置或檢索多個位,可以使用SetAll()和GetAll()方法,如下面的代碼片段所示:
檢查BitArray是否只讀
如果需要檢查BitArray是否是只讀的,可以使用IsReadOnly屬性。這一屬性返回一個布爾值,指示BitArray是否只讀。下面的代碼片段展示了如何檢查BitArray是否是只讀的。
當執行上述代碼段時,文本“False”將顯示在控制臺窗口中。
BitArray中的Length和Count屬性
BitArray的Length屬性返回數組中的位數。Count屬性返回BitArray中true和false值的計數。需要注意,Length屬性總是返回數組中的總位數,即使所有位數都為假。換句話說,Length和Count屬性將為BitArray顯示相同的值。
下面的代碼說明了如何獲取BitArray的Length和Count。
當執行上述代碼時,輸出將類似于圖2所示。
圖2
可能需要檢查BitArray實例是否同步。這可以通過調用實例的IsSynchronized屬性來完成,如果BitArray已同步,該屬性將返回true,否則返回false。
在BitArray中執行AND, OR和NOT操作
下面的代碼清單顯示了如何在兩個BitArray實例上按位執行AND操作。位與運算如果兩個操作數都為true,則返回true (或1),否則返回false。位OR操作如果其中一個或兩個操作數都為true則返回true,否則返回false。
當執行上述代碼時,bitArray1的每個元素的值將在AND操作之后顯示出來。
圖3
要在兩個Bitarray上執行按位OR操作,只需將AND操作符替換為前面示例中的OR操作符。換句話說,用bitArray1.Or(bitArray2)替換bitArray1.And(bitArray2)。
對BitArray執行NOT操作會將所有true元素更改為false,反之亦然。下面的代碼片段將把BitArray1的元素從{true, false, false, true, false}更改為{false, true, true, false, true}。
BitArrays的常見用例
BitArray有許多常見的用例,例如用于執行對圖像的按位操作。圖像中每個像素的顏色由一定數量的位來定義。改變像素的顏色需要操縱組成它的比特。使用BitArray,可以很容易地操作數組中的各個位。
BitArray也常用于處理網絡數據包。數據包包含大量的數據,根據協議的不同,這些數據可能被格式化為位或字節??梢允褂肂itArray輕松地提取和操作每個包中包含的位。
還可以在應用程序中使用BitArray來表示布爾值。通過這樣做,可以減少內存和存儲需求。BitArray占用的空間是bool類型的1/8,因為BitArray對每個值只存儲1位。此外,一個字節只能保存8個值,一個整數只能保存32個值,而BitArray可以保存任意數量的布爾值。如果要存儲大量的數據,這種差異可能會非常顯著。
最后,當涉及到處理一個巨大的集合時,一旦開始從內存中獲取數據,BitArray和位處理的優勢就會變得很明顯。例如,包含10000項的BitArray和包含10000項的List在性能上會有顯著差異。List需要的內存讀取量是BitArray的8倍。
原文標題:??How to use BitArray in .NET 7???,作者:Joydip Kanjilal?