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 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 |
| 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 |
| HasAnySet() |
Determina si algún bit de está BitArray establecido |
| LeftShift(Int32) |
Desplaza todos los valores de bits del actual BitArray a la izquierda en |
| 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 |
| 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 |
| RightShift(Int32) |
Desplaza todos los valores de bits del actual BitArray a la derecha en |
| 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.