📜  C#|将BitArray元素复制到数组

📅  最后修改于: 2021-05-29 23:01:46             🧑  作者: Mango

BitArray类管理一个紧凑的位值数组,这些值表示为布尔值,其中true表示该位打开,1 ,false表示该位关闭,0 。此类包含在System.Collections命名空间中。
BitArray.CopyTo(Array,Int32)方法用于从目标数组的指定索引处开始,将整个BitArray复制到兼容的一维Array。

特性:

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

句法:

public void CopyTo (Array arr, int index);

参数:

  • arr:这是一维数组,是从BitArray复制的元素的目的地。数组必须具有从零开始的索引。
  • index:它是数组中从零开始的索引,从此处开始复制。

例外情况:

  • ArgumentNullException:如果arr为null。
  • ArgumentOutOfRangeException:如果索引小于零。
  • ArgumentException:如果arr为多维源BitArray中的元素数大于从索引到目标数组末尾的可用空间。
  • InvalidCastException:如果无法将源BitArray的类型强制转换为目标数组的类型。

下面给出了一些示例,以更好地理解实现:

范例1:

// C# code to copy BitArray to Array,
// starting at the specified index
// of the target array
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a BitArray
        BitArray myBitArr = new BitArray(4);
  
        myBitArr[0] = true;
        myBitArr[1] = true;
        myBitArr[2] = true;
        myBitArr[3] = true;
  
        // Creating a bool array
        bool[] myBoolArr = new bool[8];
  
        myBoolArr[0] = false;
        myBoolArr[1] = false;
  
        // Copying BitArray to Array,
        // starting at the specified index
        // of the target array
        myBitArr.CopyTo(myBoolArr, 3);
  
        // Displaying elements in myBoolArr
        foreach(Object obj in myBoolArr)
        {
            Console.WriteLine(obj);
        }
    }
}

输出:

False
False
False
True
True
True
True
False

范例2:

// C# code to copy BitArray to Array,
// starting at the specified index
// of the target array
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a BitArray
        BitArray myBitArr = new BitArray(3);
  
        myBitArr[0] = true;
        myBitArr[1] = true;
        myBitArr[2] = true;
  
        // Creating a bool array
        bool[] myBoolArr = new bool[8];
  
        myBoolArr[0] = false;
        myBoolArr[1] = false;
        myBoolArr[2] = false;
  
        // Copying BitArray to Array,
        // starting at the specified index
        // of the target array
        // This should raise "ArgumentOutOfRangeException"
        // as index is less than 0
        myBitArr.CopyTo(myBoolArr, -2);
  
        // Displaying elements in myBoolArr
        foreach(Object obj in myBoolArr)
        {
            Console.WriteLine(obj);
        }
    }
}

运行时错误:

笔记:

  • 指定的数组必须是兼容类型。仅支持boolintbyte类型的数组。
  • 此方法使用Array.Copy复制元素。
  • 此方法是O(n)运算,其中n是Count。

参考:

  • https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.bitarray.copyto?view=netframework-4.7.2