C# | Copiar elementos de BitArray a un Array

La clase BitArray administra una array compacta de valores de bits, que se representan como valores booleanos, donde verdadero indica que el bit está activado , es decir, 1 y falso indica que el bit está desactivado , es decir, 0 . Esta clase está contenida en el espacio de nombres System.Collections .
El método BitArray.CopyTo(Array, Int32) se utiliza para copiar todo el BitArray en un Array unidimensional compatible, comenzando en el índice especificado del conjunto de destino.

Propiedades:

  • La clase BitArray es una clase de colección en la que la capacidad es siempre la misma que la cuenta.
  • Los elementos se agregan a un BitArray aumentando la propiedad Longitud .
  • Los elementos se eliminan al disminuir la propiedad Longitud .
  • Se puede acceder a los elementos de esta colección mediante un índice entero. Los índices de esta colección están basados ​​en cero.

Sintaxis:

public void CopyTo (Array arr, int index);

Parámetros:

  • arr: Es el arreglo unidimensional que es el destino de los elementos copiados de BitArray. El Array debe tener una indexación basada en cero.
  • índice: es el índice basado en cero en la array en el que comienza la copia.

Excepciones:

  • ArgumentNullException: si el arr es nulo.
  • ArgumentOutOfRangeException: si el índice es menor que cero.
  • ArgumentException: si el arreglo es multidimensional O el número de elementos en el BitArray de origen es mayor que el espacio disponible desde el índice hasta el final del arreglo de destino.
  • InvalidCastException: si el tipo de BitArray de origen no se puede convertir automáticamente al tipo de array de destino.

A continuación se dan algunos ejemplos para entender la implementación de una mejor manera:

Ejemplo 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);
        }
    }
}

Producción:

False
False
False
True
True
True
True
False

Ejemplo 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);
        }
    }
}

Error de tiempo de ejecución:

Excepción no controlada:
System.ArgumentOutOfRangeException: se requiere un número no negativo.
Nombre del parámetro: índice

Nota:

  • La array especificada debe ser de un tipo compatible. Solo se admiten los tipos de arrays bool , int y byte .
  • Este método usa Array.Copy para copiar los elementos.
  • Este método es una operación O(n), donde n es Count.

Referencia:

Publicación traducida automáticamente

Artículo escrito por Sahil_Bansall y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *