BitArray Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Administra una matriz compacta de valores de bit que se representan como valores booleanos, donde true
indica que el bit está activado (1) y 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 namespace System;
using namespace System::Collections;
void PrintValues( IEnumerable^ myList, int myWidth );
int main()
{
// Creates and initializes several BitArrays.
BitArray^ myBA1 = gcnew BitArray( 5 );
BitArray^ myBA2 = gcnew BitArray( 5,false );
array<Byte>^myBytes = {1,2,3,4,5};
BitArray^ myBA3 = gcnew BitArray( myBytes );
array<Boolean>^myBools = {true,false,true,true,false};
BitArray^ myBA4 = gcnew BitArray( myBools );
array<Int32>^myInts = {6,7,8,9,10};
BitArray^ myBA5 = gcnew 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 );
}
void PrintValues( IEnumerable^ myList, int myWidth )
{
int i = myWidth;
IEnumerator^ myEnum = myList->GetEnumerator();
while ( myEnum->MoveNext() )
{
Object^ obj = safe_cast<Object^>(myEnum->Current);
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
*/
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 reduciendo 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 inicia 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 BitArray que puede almacenar un número variable de bits. BitVector32 almacena marcas de bits y enteros pequeños, por lo que resulta ideal para los datos que no se exponen 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 tener acceso a los elementos de esta colección mediante un índice entero. Los índices de esta colección se basan en cero.
Constructores
BitArray(BitArray) |
Inicializa una nueva instancia de la clase BitArray que contiene los valores de bit copiados de la colección BitArray especificada. |
BitArray(Boolean[]) |
Inicializa una nueva instancia de la clase BitArray que contiene los valores de bit copiados de la matriz de valores booleanos especificada. |
BitArray(Byte[]) |
Inicializa una nueva instancia de la clase BitArray que contiene los valores de bit copiados de la matriz de bytes especificada. |
BitArray(Int32) |
Inicializa una nueva instancia de la clase BitArray que puede contener el número especificado de valores de bit, establecidos inicialmente en |
BitArray(Int32, Boolean) |
Inicializa una nueva instancia de la clase BitArray que puede contener el número especificado de valores de bit, establecidos inicialmente en el valor especificado. |
BitArray(Int32[]) |
Inicializa una nueva instancia de la clase BitArray que contiene los valores de bit copiados de la matriz de enteros de 32 bits especificada. |
Propiedades
Count |
Obtiene el número de elementos incluidos en BitArray. |
IsReadOnly |
Obtiene un valor que indica si BitArray es de solo lectura. |
IsSynchronized |
Obtiene un valor que indica si el acceso a la interfaz BitArray está sincronizado (es seguro para subprocesos). |
Item[Int32] |
Obtiene o establece el valor del bit que se encuentra 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
And(BitArray) |
Realiza la operación AND bit a bit entre los elementos del objeto BitArray actual y los elementos correspondientes de la matriz especificada. El objeto BitArray actual se modificará para almacenar el resultado de la operación AND bit a bit. |
Clone() |
Crea una copia superficial de la colección BitArray. |
CopyTo(Array, Int32) |
Copia la totalidad de BitArray en una matriz Array unidimensional compatible, comenzando en el índice especificado de la matriz de destino. |
Equals(Object) |
Determina si el objeto especificado es igual que el 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 la colección BitArray. |
GetHashCode() |
Sirve como la 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 BitArray se establecen |
HasAnySet() |
Determina si cualquier bit de está establecido |
LeftShift(Int32) |
Desplaza todos los valores de bit del elemento BitArray actual a la izquierda en |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
Not() |
Invierte todos los valores de bit que se encuentran en la colección BitArray actual, de manera que los elementos establecidos en |
Or(BitArray) |
Realiza la operación OR bit a bit entre los elementos del objeto BitArray actual y los elementos correspondientes de la matriz especificada. El objeto BitArray actual se modificará para almacenar el resultado de la operación OR bit a bit. |
RightShift(Int32) |
Desplaza a la derecha todos los valores de bit del elemento BitArray actual en |
Set(Int32, Boolean) |
Establece el bit situado en una posición específica de BitArray en el valor especificado. |
SetAll(Boolean) |
Establece todos los bits de BitArray en el valor especificado. |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
Xor(BitArray) |
Realiza la operación exclusiva OR bit a bit entre los elementos del objeto BitArray actual frente a los elementos correspondientes de la matriz especificada. El objeto BitArray actual se modificará para almacenar el resultado de la operación OR exclusiva bit a bit. |
Implementaciones de interfaz explícitas
ICollection.CopyTo(Array, Int32) |
Copia los elementos de BitArray a un objeto Array, a partir del índice Array especificado. |
ICollection.Count |
Obtiene el número de elementos de BitArray. |
ICollection.IsSynchronized |
Obtiene un valor que indica si el acceso a BitArray está sincronizado (es seguro para subprocesos). |
ICollection.SyncRoot |
Obtiene un objeto que se puede usar para sincronizar el acceso a BitArray. |
Métodos de extensión
Cast<TResult>(IEnumerable) |
Convierte los elementos de IEnumerable en el tipo especificado. |
OfType<TResult>(IEnumerable) |
Filtra los elementos de IEnumerable en función de un tipo especificado. |
AsParallel(IEnumerable) |
Habilita la paralelización de una consulta. |
AsQueryable(IEnumerable) |
Convierte una interfaz IEnumerable en IQueryable. |
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 subprocesos.
Esta implementación no proporciona un contenedor sincronizado (seguro para subprocesos) para .BitArray
Enumerar una colección no es intrínsecamente un procedimiento seguro para subprocesos. Incluso cuando una colección está sincronizada, otros subprocesos todavía pueden modificarla, lo que hace que el enumerador produzca una excepción. Con el fin de garantizar la seguridad para la ejecución de subprocesos durante la enumeración, se puede bloquear la colección durante toda la enumeración o detectar las excepciones resultantes de los cambios realizados por otros subprocesos.