Compartir a través de


BitArray Clase

Definición

Administra una matriz compacta de valores de bits, que se representan como booleanos, donde true indica que el bit está activado (1) e false indica que el bit está desactivado (0).

public ref class BitArray sealed : System::Collections::ICollection
public ref class BitArray sealed : ICloneable, System::Collections::ICollection
public sealed class BitArray : System.Collections.ICollection
public sealed class BitArray : ICloneable, System.Collections.ICollection
[System.Serializable]
public sealed class BitArray : ICloneable, System.Collections.ICollection
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class BitArray : ICloneable, System.Collections.ICollection
type BitArray = class
    interface ICollection
    interface IEnumerable
type BitArray = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
[<System.Serializable>]
type BitArray = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type BitArray = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
Public NotInheritable Class BitArray
Implements ICollection
Public NotInheritable Class BitArray
Implements ICloneable, ICollection
Herencia
BitArray
Atributos
Implementaciones

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear e inicializar y BitArray cómo imprimir sus valores.

using System;
using System.Collections;
public class SamplesBitArray  {

   public static void Main()  {

      // Creates and initializes several BitArrays.
      BitArray myBA1 = new BitArray( 5 );

      BitArray myBA2 = new BitArray( 5, false );

      byte[] myBytes = new byte[5] { 1, 2, 3, 4, 5 };
      BitArray myBA3 = new BitArray( myBytes );

      bool[] myBools = new bool[5] { true, false, true, true, false };
      BitArray myBA4 = new BitArray( myBools );

      int[]  myInts  = new int[5] { 6, 7, 8, 9, 10 };
      BitArray myBA5 = new BitArray( myInts );

      // Displays the properties and values of the BitArrays.
      Console.WriteLine( "myBA1" );
      Console.WriteLine( "   Count:    {0}", myBA1.Count );
      Console.WriteLine( "   Length:   {0}", myBA1.Length );
      Console.WriteLine( "   Values:" );
      PrintValues( myBA1, 8 );

      Console.WriteLine( "myBA2" );
      Console.WriteLine( "   Count:    {0}", myBA2.Count );
      Console.WriteLine( "   Length:   {0}", myBA2.Length );
      Console.WriteLine( "   Values:" );
      PrintValues( myBA2, 8 );

      Console.WriteLine( "myBA3" );
      Console.WriteLine( "   Count:    {0}", myBA3.Count );
      Console.WriteLine( "   Length:   {0}", myBA3.Length );
      Console.WriteLine( "   Values:" );
      PrintValues( myBA3, 8 );

      Console.WriteLine( "myBA4" );
      Console.WriteLine( "   Count:    {0}", myBA4.Count );
      Console.WriteLine( "   Length:   {0}", myBA4.Length );
      Console.WriteLine( "   Values:" );
      PrintValues( myBA4, 8 );

      Console.WriteLine( "myBA5" );
      Console.WriteLine( "   Count:    {0}", myBA5.Count );
      Console.WriteLine( "   Length:   {0}", myBA5.Length );
      Console.WriteLine( "   Values:" );
      PrintValues( myBA5, 8 );
   }

   public static void PrintValues( IEnumerable myList, int myWidth )  {
      int i = myWidth;
      foreach ( Object obj in myList ) {
         if ( i <= 0 )  {
            i = myWidth;
            Console.WriteLine();
         }
         i--;
         Console.Write( "{0,8}", obj );
      }
      Console.WriteLine();
   }
}


/*
This code produces the following output.

myBA1
   Count:    5
   Length:   5
   Values:
   False   False   False   False   False
myBA2
   Count:    5
   Length:   5
   Values:
   False   False   False   False   False
myBA3
   Count:    40
   Length:   40
   Values:
    True   False   False   False   False   False   False   False
   False    True   False   False   False   False   False   False
    True    True   False   False   False   False   False   False
   False   False    True   False   False   False   False   False
    True   False    True   False   False   False   False   False
myBA4
   Count:    5
   Length:   5
   Values:
    True   False    True    True   False
myBA5
   Count:    160
   Length:   160
   Values:
   False    True    True   False   False   False   False   False
   False   False   False   False   False   False   False   False
   False   False   False   False   False   False   False   False
   False   False   False   False   False   False   False   False
    True    True    True   False   False   False   False   False
   False   False   False   False   False   False   False   False
   False   False   False   False   False   False   False   False
   False   False   False   False   False   False   False   False
   False   False   False    True   False   False   False   False
   False   False   False   False   False   False   False   False
   False   False   False   False   False   False   False   False
   False   False   False   False   False   False   False   False
    True   False   False    True   False   False   False   False
   False   False   False   False   False   False   False   False
   False   False   False   False   False   False   False   False
   False   False   False   False   False   False   False   False
   False    True   False    True   False   False   False   False
   False   False   False   False   False   False   False   False
   False   False   False   False   False   False   False   False
   False   False   False   False   False   False   False   False
*/
Imports System.Collections

Public Class SamplesBitArray

    Public Shared Sub Main()

        ' Creates and initializes several BitArrays.
        Dim myBA1 As New BitArray(5)

        Dim myBA2 As New BitArray(5, False)

        Dim myBytes() As Byte = {1, 2, 3, 4, 5}
        Dim myBA3 As New BitArray(myBytes)

        Dim myBools() As Boolean = {True, False, True, True, False}
        Dim myBA4 As New BitArray(myBools)

        Dim myInts() As Integer = {6, 7, 8, 9, 10}
        Dim myBA5 As New BitArray(myInts)

        ' Displays the properties and values of the BitArrays.
        Console.WriteLine("myBA1")
        Console.WriteLine("   Count:    {0}", myBA1.Count)
        Console.WriteLine("   Length:   {0}", myBA1.Length)
        Console.WriteLine("   Values:")
        PrintValues(myBA1, 8)

        Console.WriteLine("myBA2")
        Console.WriteLine("   Count:    {0}", myBA2.Count)
        Console.WriteLine("   Length:   {0}", myBA2.Length)
        Console.WriteLine("   Values:")
        PrintValues(myBA2, 8)

        Console.WriteLine("myBA3")
        Console.WriteLine("   Count:    {0}", myBA3.Count)
        Console.WriteLine("   Length:   {0}", myBA3.Length)
        Console.WriteLine("   Values:")
        PrintValues(myBA3, 8)

        Console.WriteLine("myBA4")
        Console.WriteLine("   Count:    {0}", myBA4.Count)
        Console.WriteLine("   Length:   {0}", myBA4.Length)
        Console.WriteLine("   Values:")
        PrintValues(myBA4, 8)

        Console.WriteLine("myBA5")
        Console.WriteLine("   Count:    {0}", myBA5.Count)
        Console.WriteLine("   Length:   {0}", myBA5.Length)
        Console.WriteLine("   Values:")
        PrintValues(myBA5, 8)

    End Sub

    Public Shared Sub PrintValues(myList As IEnumerable, myWidth As Integer)
        Dim i As Integer = myWidth
        Dim obj As [Object]
        For Each obj In  myList
            If i <= 0 Then
                i = myWidth
                Console.WriteLine()
            End If
            i -= 1
            Console.Write("{0,8}", obj)
        Next obj
        Console.WriteLine()
    End Sub

End Class


' This code produces the following output.
' 
' myBA1
'    Count:    5
'    Length:   5
'    Values:
'    False   False   False   False   False
' myBA2
'    Count:    5
'    Length:   5
'    Values:
'    False   False   False   False   False
' myBA3
'    Count:    40
'    Length:   40
'    Values:
'     True   False   False   False   False   False   False   False
'    False    True   False   False   False   False   False   False
'     True    True   False   False   False   False   False   False
'    False   False    True   False   False   False   False   False
'     True   False    True   False   False   False   False   False
' myBA4
'    Count:    5
'    Length:   5
'    Values:
'     True   False    True    True   False
' myBA5
'    Count:    160
'    Length:   160
'    Values:
'    False    True    True   False   False   False   False   False
'    False   False   False   False   False   False   False   False
'    False   False   False   False   False   False   False   False
'    False   False   False   False   False   False   False   False
'     True    True    True   False   False   False   False   False
'    False   False   False   False   False   False   False   False
'    False   False   False   False   False   False   False   False
'    False   False   False   False   False   False   False   False
'    False   False   False    True   False   False   False   False
'    False   False   False   False   False   False   False   False
'    False   False   False   False   False   False   False   False
'    False   False   False   False   False   False   False   False
'     True   False   False    True   False   False   False   False
'    False   False   False   False   False   False   False   False
'    False   False   False   False   False   False   False   False
'    False   False   False   False   False   False   False   False
'    False    True   False    True   False   False   False   False
'    False   False   False   False   False   False   False   False
'    False   False   False   False   False   False   False   False
'    False   False   False   False   False   False   False   False

Comentarios

La BitArray clase es una clase de colección en la que la capacidad siempre es la misma que el recuento. Los elementos se agregan a un BitArray mediante el aumento de la Length propiedad; los elementos se eliminan disminuyendo la Length propiedad. El tamaño de un BitArray control se controla mediante el cliente; la indexación más allá del final de BitArray produce una ArgumentExceptionexcepción . La BitArray clase proporciona métodos que no se encuentran en otras colecciones, incluidos los que permiten modificar varios elementos a la vez mediante un filtro, como And, Or, Xor , Noty SetAll.

La BitVector32 clase es una estructura que proporciona la misma funcionalidad BitArrayque , pero con un rendimiento más rápido. BitVector32 es más rápido porque es un tipo de valor y, por tanto, se asigna en la pila, mientras BitArray que es un tipo de referencia y, por lo tanto, se asigna en el montón.

System.Collections.Specialized.BitVector32 puede almacenar exactamente 32 bits, mientras que BitArray puede almacenar un número variable de bits. BitVector32 almacena marcas de bits y enteros pequeños, lo que lo convierte en ideal para los datos que no están expuestos al usuario. Sin embargo, si se desconoce el número de marcas de bits necesarias, es variable o es mayor que 32, use BitArray en su lugar.

BitArray está en el System.Collections espacio de nombres; BitVector32 está en el System.Collections.Specialized espacio de nombres .

Se puede acceder a los elementos de esta colección mediante un índice entero. Los índices de esta colección se basan en cero.

Constructores

Nombre Description
BitArray(BitArray)

Inicializa una nueva instancia de la BitArray clase que contiene valores de bits copiados del especificado BitArray.

BitArray(Boolean[])

Inicializa una nueva instancia de la BitArray clase que contiene valores de bits copiados de la matriz especificada de booleanos.

BitArray(Byte[])

Inicializa una nueva instancia de la BitArray clase que contiene valores de bits copiados de la matriz de bytes especificada.

BitArray(Int32, Boolean)

Inicializa una nueva instancia de la BitArray clase que puede contener el número especificado de valores de bits, que se establecen inicialmente en el valor especificado.

BitArray(Int32)

Inicializa una nueva instancia de la BitArray clase que puede contener el número especificado de valores de bits, que se establecen inicialmente en false.

BitArray(Int32[])

Inicializa una nueva instancia de la BitArray clase que contiene valores de bits copiados de la matriz especificada de enteros de 32 bits.

Propiedades

Nombre Description
Count

Obtiene el número de elementos contenidos en .BitArray

IsReadOnly

Obtiene un valor que indica si es BitArray de solo lectura.

IsSynchronized

Obtiene un valor que indica si el acceso a BitArray está sincronizado (seguro para subprocesos).

Item[Int32]

Obtiene o establece el valor del bit en una posición específica de BitArray.

Length

Obtiene o establece el número de elementos de .BitArray

SyncRoot

Obtiene un objeto que se puede usar para sincronizar el acceso a .BitArray

Métodos

Nombre Description
And(BitArray)

Realiza la operación AND bit a bit entre los elementos del objeto actual BitArray y los elementos correspondientes de la matriz especificada. El objeto actual BitArray se modificará para almacenar el resultado de la operación AND bit a bit.

Clone()

Crea una copia superficial de .BitArray

CopyTo(Array, Int32)

Copia todo en BitArray una unidimensional Arraycompatible, empezando por el índice especificado de la matriz de destino.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
Get(Int32)

Obtiene el valor del bit en una posición específica de .BitArray

GetEnumerator()

Devuelve un enumerador que recorre en iteración .BitArray

GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
HasAllSet()

Determina si todos los bits de se BitArray establecen trueen .

HasAnySet()

Determina si algún bit de está BitArray establecido trueen .

LeftShift(Int32)

Desplaza todos los valores de bits del actual BitArray a la izquierda en count bits.

MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
Not()

Invierte todos los valores de bits en el objeto actual BitArray, de modo que los elementos establecidos true en se cambien a falsey los elementos establecidos false en se cambien a true.

Or(BitArray)

Realiza la operación OR bit a bit entre los elementos del objeto actual BitArray y los elementos correspondientes de la matriz especificada. El objeto actual BitArray se modificará para almacenar el resultado de la operación OR bit a bit.

PopCount()

Administra una matriz compacta de valores de bits, que se representan como booleanos, donde true indica que el bit está activado (1) e false indica que el bit está desactivado (0).

RightShift(Int32)

Desplaza todos los valores de bits del actual BitArray a la derecha en count bits.

Set(Int32, Boolean)

Establece el bit en una posición específica del objeto en BitArray el valor especificado.

SetAll(Boolean)

Establece todos los bits del objeto BitArray en el valor especificado.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
Xor(BitArray)

Realiza la operación OR exclusiva bit a bit entre los elementos del objeto actual BitArray en los elementos correspondientes de la matriz especificada. El objeto actual BitArray se modificará para almacenar el resultado de la operación OR exclusiva bit a bit.

Implementaciones de interfaz explícitas

Nombre Description
ICollection.CopyTo(Array, Int32)

Copia los elementos de en BitArray un Arrayobjeto , empezando por el índice especificado Array .

ICollection.Count

Obtiene el número de elementos de .BitArray

ICollection.IsSynchronized

Obtiene un valor que indica si el acceso a BitArray está sincronizado (seguro para subprocesos).

ICollection.SyncRoot

Obtiene un objeto que se puede usar para sincronizar el acceso a .BitArray

Métodos de extensión

Nombre Description
AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte un IEnumerable en un IQueryable.

Cast<TResult>(IEnumerable)

Convierte los elementos de un IEnumerable al tipo especificado.

OfType<TResult>(IEnumerable)

Filtra los elementos de un IEnumerable en función de un tipo especificado.

Se aplica a

Seguridad para subprocesos

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancia sean seguros para el acceso concurrente.

Esta implementación no proporciona un contenedor sincronizado (seguro para subprocesos) para .BitArray

La enumeración a través de una colección no es intrínsecamente un procedimiento seguro para subprocesos. Incluso cuando se sincroniza una colección, otros subprocesos todavía pueden modificar la colección, lo que hace que el enumerador inicie una excepción. Para garantizar la seguridad de los subprocesos durante la enumeración, puede bloquear la colección durante toda la enumeración o detectar las excepciones resultantes de los cambios realizados por otros subprocesos.

Consulte también