BitArray Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Gerencia uma matriz compacta de valores de bit, que são representados como boolianos, onde true indica que o bit está ativado (1) e false indica que o bit está desativado (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
- Herança
-
BitArray
- Atributos
- Implementações
Exemplos
O exemplo de código a seguir mostra como criar e inicializar um BitArray e como imprimir 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
Comentários
A BitArray classe é uma classe de coleção na qual a capacidade é sempre a mesma que a contagem. Os elementos são adicionados a um BitArray aumentando a propriedade; os Length elementos são excluídos diminuindo a Length propriedade. O tamanho de um BitArray é controlado pelo cliente; a indexação após o final do BitArray lançamento de um ArgumentException. A BitArray classe fornece métodos que não são encontrados em outras coleções, incluindo aqueles que permitem que vários elementos sejam modificados ao mesmo tempo usando um filtro, como And, Or, , Xor e NotSetAll.
A BitVector32 classe é uma estrutura que fornece a mesma funcionalidade BitArrayque , mas com um 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 no heap.
System.Collections.Specialized.BitVector32 pode armazenar exatamente 32 bits, enquanto BitArray pode armazenar um número variável de bits. BitVector32 armazena sinalizadores de bits e números inteiros pequenos, tornando-o ideal para dados que não são expostos ao usuário. No entanto, se o número de sinalizadores de bits necessários for desconhecido, for variável ou for maior que 32, use BitArray em vez disso.
BitArray está no System.Collections namespace; BitVector32 está no System.Collections.Specialized namespace.
Os elementos nesta coleção podem ser acessados usando um índice inteiro. Os índices nesta coleção são baseados em zero.
Construtores
| Nome | Description |
|---|---|
| BitArray(BitArray) |
Inicializa uma nova instância da BitArray classe que contém valores de bit copiados do especificado BitArray. |
| BitArray(Boolean[]) |
Inicializa uma nova instância da BitArray classe que contém valores de bit copiados da matriz especificada de Booleans. |
| BitArray(Byte[]) |
Inicializa uma nova instância da BitArray classe que contém valores de bit copiados da matriz de bytes especificada. |
| BitArray(Int32, Boolean) |
Inicializa uma nova instância da BitArray classe que pode conter o número especificado de valores de bit, que são inicialmente definidos como o valor especificado. |
| BitArray(Int32) |
Inicializa uma nova instância da BitArray classe que pode conter o número especificado de valores de bit, que são inicialmente definidos como |
| BitArray(Int32[]) |
Inicializa uma nova instância da BitArray classe que contém valores de bit copiados da matriz especificada de inteiros de 32 bits. |
Propriedades
| Nome | Description |
|---|---|
| Count |
Obtém o número de elementos contidos no BitArray. |
| IsReadOnly |
Obtém um valor que indica se o BitArray valor é somente leitura. |
| IsSynchronized |
Obtém um valor que indica se o BitArray acesso ao é sincronizado (thread safe). |
| Item[Int32] |
Obtém ou define o valor do bit em uma posição específica no 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
| Nome | Description |
|---|---|
| And(BitArray) |
Executa a operação AND bit a bit entre os elementos do objeto atual BitArray e os elementos correspondentes na matriz especificada. O objeto atual BitArray será modificado para armazenar o resultado da operação AND bit a bit. |
| Clone() |
Cria uma cópia superficial do BitArray. |
| CopyTo(Array, Int32) |
Copia o todo BitArray para um unidimensional Arraycompatível, começando no índice especificado da matriz de destino. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| Get(Int32) |
Obtém o valor do bit em uma posição específica no BitArray. |
| GetEnumerator() |
Retorna um enumerador que itera por meio do BitArray. |
| GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| HasAllSet() |
Determina se todos os bits no BitArray são definidos como |
| HasAnySet() |
Determina se algum bit no BitArray está definido como |
| LeftShift(Int32) |
Desloca todos os valores de bit da corrente BitArray para a esquerda em |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (Herdado de Object) |
| Not() |
Inverte todos os valores de bit no atual BitArray, de modo que os elementos definidos como |
| Or(BitArray) |
Executa a operação OR bit a bit entre os elementos do objeto atual BitArray e os elementos correspondentes na matriz especificada. O objeto atual BitArray será modificado para armazenar o resultado da operação OR bit a bit. |
| PopCount() |
Gerencia uma matriz compacta de valores de bit, que são representados como boolianos, onde |
| RightShift(Int32) |
Desloca todos os valores de bit da corrente BitArray para a direita em |
| Set(Int32, Boolean) |
Define o bit em uma posição específica no BitArray valor especificado. |
| SetAll(Boolean) |
Define todos os bits no BitArray valor especificado. |
| ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
| Xor(BitArray) |
Executa a operação OR exclusiva bit a bit entre os elementos do objeto atual BitArray em relação aos elementos correspondentes na matriz especificada. O objeto atual BitArray será modificado para armazenar o resultado da operação OR exclusiva bit a bit. |
Implantações explícitas de interface
| Nome | Description |
|---|---|
| ICollection.CopyTo(Array, Int32) |
Copia os elementos de BitArray um Array, começando no índice especificado Array . |
| ICollection.Count |
Obtém o número de elementos no BitArray. |
| ICollection.IsSynchronized |
Obtém 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 de Extensão
| Nome | Description |
|---|---|
| AsParallel(IEnumerable) |
Habilita a paralelização de uma consulta. |
| AsQueryable(IEnumerable) |
Converte um IEnumerable em um IQueryable. |
| Cast<TResult>(IEnumerable) |
Converte os elementos de um IEnumerable para o tipo especificado. |
| OfType<TResult>(IEnumerable) |
Filtra os elementos de um IEnumerable com base em um tipo especificado. |
Aplica-se a
Acesso thread-safe
Membros estáticos públicos (Shared no Visual Basic) desse tipo são thread safe. Não há garantia de que quaisquer membros de instância sejam thread-safe.
Essa implementação não fornece um wrapper sincronizado (thread safe) para um BitArray.
Enumerar por meio de uma coleção não é intrinsecamente um procedimento thread-safe. Mesmo quando uma coleção é sincronizada, outros threads ainda podem modificar a coleção, o que faz com que o enumerador gere uma exceção. Para garantir a segurança do thread durante a enumeração, você pode bloquear a coleção durante toda a enumeração ou capturar as exceções resultantes de alterações feitas por outros threads.