当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C# BitArray用法及代码示例


BitArray 类管理一个紧凑的位值数组,这些位值表示为布尔值,其中 true 表示该位打开,即 1,而 false 表示该位关闭,即 0。此类包含在 System.Collections 命名空间中。

BitArray 类的属性:

  • BitArray 类是一个集合类,其中容量始终与计数相同。
  • 通过增加元素将元素添加到 BitArray长度属性。
  • 通过减少元素来删除长度属性。
  • 可以使用整数索引来访问此集合中的元素。该集合中的索引是从零开始的。

Constructors

构造函数 说明
BitArray(BitArray) 初始化 BitArray 类的新实例,其中包含从指定 BitArray 复制的位值。
位数组(布尔值[]) 初始化 BitArray 类的新实例,其中包含从指定布尔值数组复制的位值。
位数组(字节[]) 初始化 BitArray 类的新实例,其中包含从指定字节数组复制的位值。
位数组(Int32) 初始化 BitArray 类的新实例,该实例可以保存指定数量的位值,这些位值最初设置为 false。
BitArray(Int32,布尔值) 初始化 BitArray 类的新实例,该实例可以保存指定数量的位值,这些位值最初设置为指定值。
位数组(Int32[]) 初始化 BitArray 类的新实例,其中包含从指定的 32 位整数数组复制的位值。

例子:


// C# code to create a BitArray 
using System; 
using System.Collections; 
  
class GFG { 
  
    // Driver code 
    public static void Main() 
    { 
  
        // Creating a BitArray 
        BitArray myBitArr = new BitArray(5); 
  
        myBitArr[0] = true; 
        myBitArr[1] = true; 
        myBitArr[2] = false; 
        myBitArr[3] = true; 
        myBitArr[4] = false; 
  
        // To get the value of index at index 2 
        Console.WriteLine(myBitArr.Get(2)); 
  
        // To get the value of index at index 3 
        Console.WriteLine(myBitArr.Get(3)); 
    } 
} 

输出:

False
True

Properties

属性 说明
Count 获取 BitArray 中包含的元素数。
IsReadOnly 获取一个值,该值指示BitArray是否为只读。
IsSynchronized 获取一个值,该值指示对 BitArray 的访问是否同步(线程安全)。
项目[Int32] 获取或设置 BitArray 中特定位置的位值。
Length 获取或设置 BitArray 中的元素数。
SyncRoot 获取可用于同步对 BitArray 的访问的对象。

例子:


// C# program to illustrate the  
// BitArray Class Properties 
using System;  
using System.Collections;  
  
class GFG {  
    
    // Driver code  
    public static void Main()  
    {  
    
        // Creating a BitArray  
        BitArray myBitArr = new BitArray(new byte[] { 0, 0, 0, 1 });  
    
        // -------- IsReadOnly Property -------- 
          
        // Checking if the BitArray is read-only  
        Console.WriteLine(myBitArr.IsReadOnly);  
          
        // -------- Count Property -------- 
          
        // To get the number of elements  
        // contained in the BitArray  
        Console.WriteLine(myBitArr.Count);  
          
    }  
}  

输出:

False
32

Methods

方法 说明
And(BitArray) 在当前BitArray对象的元素与指定数组中的相应元素之间执行按位与运算。当前BitArray对象将被修改以存储按位AND运算的结果。
Clone() 创建 BitArray 的浅拷贝。
复制到(数组,Int32) 从目标数组的指定索引开始,将整个 BitArray 复制到兼容的一维数组。
Equals(Object) 确定指定对象是否等于当前对象。
获取(Int32) 获取 BitArray 中特定位置的位的值。
GetEnumerator() 返回一个迭代 BitArray 的枚举器。
BitArray.LeftShift() 它用于将位数组的位向左移动一位,并在移动的位置上添加零。
GetHashCode() 用作默认的哈希函数。
GetType() 获取当前实例的类型。
MemberwiseClone() 创建当前对象的浅拷贝。
Not() 反转当前 BitArray 中的所有位值,使设置为 true 的元素更改为 false,设置为 false 的元素更改为 true。
BitArray.RightShift() 它用于将位数组的位向右移动一位,并在移动的位置上添加零。
Or(BitArray) 在当前BitArray对象的元素与指定数组中的相应元素之间执行按位或运算。当前BitArray对象将被修改以存储按位或运算的结果。
设置(Int32,布尔值) 将 BitArray 中特定位置的位设置为指定值。
SetAll(Boolean) 将 BitArray 中的所有位设置为指定值。
ToString() 返回表示当前对象的字符串。
Xor(BitArray) 在当前 BitArray 对象的元素与指定数组中的相应元素之间执行按位异或运算。当前BitArray对象将被修改以存储按位异或运算的结果。

示例 1:


// C# code to do bitwise 
// OR between BitArray 
using System; 
using System.Collections; 
  
class GFG { 
  
    // Driver code 
    public static void Main() 
    { 
  
        // Creating a BitArray 
        BitArray myBitArr1 = new BitArray(4); 
  
        // Creating a BitArray 
        BitArray myBitArr2 = new BitArray(4); 
  
        // Initializing values in myBitArr1 
        myBitArr1[0] = false; 
        myBitArr1[1] = false; 
        myBitArr1[2] = true; 
        myBitArr1[3] = true; 
  
        // Initializing values in myBitArr2 
        myBitArr2[0] = false; 
        myBitArr2[2] = false; 
        myBitArr2[1] = true; 
        myBitArr2[3] = true; 
  
        // function calling 
        PrintValues(myBitArr1.Or(myBitArr2)); 
    } 
  
    // Displaying the result 
    public static void PrintValues(IEnumerable myList) 
    { 
        foreach(Object obj in myList) 
        { 
            Console.WriteLine(obj); 
        } 
    } 
} 

输出:

False
True
True
True

示例 2:


// C# code to set all bits in the 
// BitArray to the specified value 
using System; 
using System.Collections; 
  
class GFG { 
  
    // Driver code 
    public static void Main() 
    { 
  
        // Creating a BitArray myBitArr 
        BitArray myBitArr = new BitArray(5); 
  
        // Initializing all the bits in myBitArr 
        myBitArr[0] = false; 
        myBitArr[1] = true; 
        myBitArr[2] = true; 
        myBitArr[3] = false; 
        myBitArr[4] = true; 
  
        // Printing the values in myBitArr 
        Console.WriteLine("Initially the bits are as : "); 
  
        PrintIndexAndValues(myBitArr); 
  
        // Setting all bits to false 
        myBitArr.SetAll(false); 
  
        // Printing the values in myBitArr 
        // It should display all the bits as false 
        Console.WriteLine("Finally the bits are as : "); 
  
        PrintIndexAndValues(myBitArr); 
    } 
  
    // Function to display bits 
    public static void PrintIndexAndValues(IEnumerable myArr) 
    { 
        foreach(Object obj in myArr) 
        { 
            Console.WriteLine(obj); 
        } 
    } 
} 

输出:

Initially the bits are as : 
False
True
True
False
True
Finally the bits are as : 
False
False
False
False
False

参考:



相关用法


注:本文由纯净天空筛选整理自Sahil_Bansall大神的英文原创作品 C# | BitArray Class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。