BitArray Classe

Definição

Gere um array compacto de valores de bits, que são representados como booleanos, onde true indica que o bit está ligado (1) e false indica que o bit está desligado (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
[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
public sealed class BitArray : ICloneable, System.Collections.ICollection
type BitArray = class
    interface ICollection
    interface IEnumerable
[<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
type BitArray = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
Public NotInheritable Class BitArray
Implements ICollection
Public NotInheritable Class BitArray
Implements ICloneable, ICollection
Herança
BitArray
Atributos
Implementações

Exemplos

O seguinte exemplo de código mostra como criar e inicializar um BitArray e como imprimir os seus 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

Observações

A BitArray classe é uma classe de coleção em que a capacidade é sempre a mesma da contagem. Os elementos são adicionados a BitArray aumentando a Length propriedade; os elementos são eliminados diminuindo a Length propriedade. O tamanho de a BitArray é controlado pelo cliente; ao indexar para além do final do BitArray lança um ArgumentException. A BitArray classe fornece métodos que não se encontram noutras coleções, incluindo aqueles que permitem modificar múltiplos elementos simultaneamente usando um filtro, como And, Or, Xor , Not, e SetAll.

A BitVector32 classe é uma estrutura que oferece a mesma funcionalidade que BitArray, mas com desempenho mais rápido. BitVector32 é mais rápido porque é um tipo de valor e, portanto, alocado na pilha, enquanto BitArray é um tipo de referência e, portanto, alocado na pilha.

System.Collections.Specialized.BitVector32 pode armazenar exatamente 32 bits, enquanto BitArray pode armazenar um número variável de bits. BitVector32 armazena tanto flags de bits como pequenos inteiros, tornando-o ideal para dados que não estão expostos ao utilizador. No entanto, se o número de flags de bits necessários for desconhecido, for variável ou for superior a 32, use BitArray em vez disso.

BitArray está no System.Collections espaço de nomes; BitVector32 está no System.Collections.Specialized espaço de nomes.

Os elementos desta coleção podem ser acessados usando um índice inteiro. Os índices nesta coleção são baseados em zero.

Construtores

Name Description
BitArray(BitArray)

Inicializa uma nova instância da BitArray classe que contém valores de bits copiados do especificado BitArray.

BitArray(Boolean[])

Inicializa uma nova instância da BitArray classe que contém valores de bits copiados do array especificado de booleanos.

BitArray(Byte[])

Inicializa uma nova instância da BitArray classe que contém valores de bits copiados do array de bytes especificado.

BitArray(Int32, Boolean)

Inicializa uma nova instância da BitArray classe que pode conter o número especificado de valores de bits, que são inicialmente definidos para o valor especificado.

BitArray(Int32)

Inicializa uma nova instância da BitArray classe que pode conter o número especificado de valores de bits, que são inicialmente definidos para false.

BitArray(Int32[])

Inicializa uma nova instância da BitArray classe que contém valores de bits copiados do array especificado de inteiros de 32 bits.

Propriedades

Name Description
Count

Obtém o número de elementos contidos no BitArray.

IsReadOnly

Recebe um valor que indica se o BitArray é apenas de leitura.

IsSynchronized

Recebe um valor que indica se o acesso ao BitArray é sincronizado (thread safe).

Item[Int32]

Obtém ou define o valor do bit numa posição específica do BitArray.

Length

Obtém ou define o número de elementos no BitArray.

SyncRoot

Obtém um objeto que pode ser usado para sincronizar o acesso ao BitArray.

Métodos

Name Description
And(BitArray)

Executa a operação bit a bit AND entre os elementos do objeto atual BitArray e os elementos correspondentes no array especificado. O objeto atual BitArray será modificado para armazenar o resultado da operação bit a bit AND.

Clone()

Cria uma cópia superficial do BitArray.

CopyTo(Array, Int32)

Copia a totalidade BitArray para uma unidimensional Arraycompatível , começando no índice especificado do array alvo.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Get(Int32)

Obtém o valor do bit numa posição específica do BitArray.

GetEnumerator()

Devolve um enumerador que itera através do BitArray.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
LeftShift(Int32)

Desloca todos os valores de bits da corrente BitArray para a esquerda nos count bits.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
Not()

Inverte todos os valores de bits na corrente BitArray, de modo que os elementos definidos para true são alterados para false, e os elementos definidos para false são alterados para true.

Or(BitArray)

Executa a operação bit a bit OR entre os elementos do objeto atual BitArray e os elementos correspondentes no array especificado. O objeto atual BitArray será modificado para armazenar o resultado da operação OR bit a bit.

RightShift(Int32)

Desloca todos os valores de bits da corrente BitArray para a direita nos count bits.

Set(Int32, Boolean)

Coloca o bit numa posição específica no BitArray valor especificado.

SetAll(Boolean)

Define todos os bits do BitArray para o valor especificado.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)
Xor(BitArray)

Realiza a operação OR bit a bit exclusiva entre os elementos do objeto atual BitArray contra os elementos correspondentes no array especificado. O objeto atual BitArray será modificado para armazenar o resultado da operação OR bit a bit.

Implementações de Interface Explícita

Name Description
ICollection.CopyTo(Array, Int32)

Copia os elementos do BitArray para um Array, começando no índice especificado Array .

ICollection.Count

Obtém o número de elementos em .BitArray

ICollection.IsSynchronized

Recebe um valor que indica se o acesso ao BitArray é sincronizado (thread safe).

ICollection.SyncRoot

Obtém um objeto que pode ser usado para sincronizar o acesso ao BitArray.

Métodos da Extensão

Name Description
AsParallel(IEnumerable)

Permite a paralelização de uma consulta.

AsQueryable(IEnumerable)

Converte um IEnumerable para um IQueryable.

Cast<TResult>(IEnumerable)

Conjura os elementos de an IEnumerable para o tipo especificado.

OfType<TResult>(IEnumerable)

Filtra os elementos de um IEnumerable com base num tipo especificado.

Aplica-se a

Segurança de Thread

Os membros estáticos públicos (Shared em Visual Basic) deste tipo são seguros para threads. Qualquer membro de instância não é garantido que seja seguro contra threads.

Esta implementação não fornece um wrapper sincronizado (thread safe) para um BitArray.

Enumerar através de uma coleção não é, intrinsecamente, um procedimento seguro para threads. Mesmo quando uma coleção está sincronizada, outros threads ainda podem modificar a coleção, o que faz com que o enumerador lance uma exceção. Para garantir a segurança dos threads durante a enumeração, pode bloquear a coleção durante toda a enumeração ou apanhar as exceções resultantes de alterações feitas por outros threads.

Ver também