BitArray Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Gestisce una matrice compatta di valori di bit, rappresentati come booleani, dove true
indica che il bit è attivo (1), mentre false
indica che il bit è inattivo (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
- Ereditarietà
-
BitArray
- Attributi
- Implementazioni
Esempio
Nell'esempio di codice seguente viene illustrato come creare e inizializzare un BitArray oggetto e come stampare i relativi valori.
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
Commenti
La BitArray classe è una classe di raccolta in cui la capacità è sempre uguale al conteggio. Gli elementi vengono aggiunti a un BitArray oggetto aumentando la Length proprietà. Gli elementi vengono eliminati riducendo la Length proprietà. Le dimensioni di un BitArray oggetto sono controllate dal client. L'indicizzazione oltre la fine dell'oggetto BitArray genera un'eccezione ArgumentException. La BitArray classe fornisce metodi non trovati in altre raccolte, inclusi quelli che consentono la modifica di più elementi contemporaneamente tramite un filtro, ad esempio And, Or, Xor , Note SetAll.
La BitVector32 classe è una struttura che fornisce la stessa funzionalità di BitArray, ma con prestazioni più veloci. BitVector32 è più veloce perché è un tipo valore e quindi allocato nello stack, mentre BitArray è un tipo riferimento e, pertanto, allocato nell'heap.
System.Collections.Specialized.BitVector32 può archiviare esattamente 32 bit, mentre BitArray può archiviare un numero variabile di bit. BitVector32 archivia sia flag di bit che numeri interi di piccole dimensioni, rendendolo quindi ideale per i dati che non sono esposti all'utente. Tuttavia, se il numero di flag di bit necessari è sconosciuto, è variabile o è maggiore di 32, usare BitArray invece .
BitArray è nello System.Collections spazio dei nomi . BitVector32 Si trova nello spazio dei System.Collections.Specialized nomi .
È possibile accedere a elementi di questa raccolta usando un indice integer. Gli indici in questa raccolta sono in base zero.
Costruttori
BitArray(BitArray) |
Inizializza una nuova istanza della classe BitArray che contiene i valori di bit copiati dall'oggetto BitArray specificato. |
BitArray(Boolean[]) |
Inizializza una nuova istanza della classe BitArray contenente i valori di bit copiati dalla matrice specificata di valori booleani. |
BitArray(Byte[]) |
Inizializza una nuova istanza della classe BitArray contenente i valori di bit copiati dalla matrice di byte specificata. |
BitArray(Int32) |
Inizializza una nuova istanza della classe BitArray che può contenere il numero specificato di valori di bit, inizialmente impostato su |
BitArray(Int32, Boolean) |
Inizializza una nuova istanza della classe BitArray che può contenere il numero specificato di valori di bit, inizialmente impostato sul valore specificato. |
BitArray(Int32[]) |
Inizializza una nuova istanza della classe BitArray contenente i valori di bit copiati dalla matrice specificata di valori interi a 32 bit. |
Proprietà
Count |
Ottiene il numero di elementi contenuti in BitArray. |
IsReadOnly |
Ottiene un valore che indica se BitArray è di sola lettura. |
IsSynchronized |
Ottiene un valore che indica se l'accesso a BitArray è sincronizzato (thread-safe). |
Item[Int32] |
Ottiene o imposta il valore del bit in una specifica posizione nella BitArray. |
Length |
Ottiene o imposta il numero di elementi nell'oggetto BitArray. |
SyncRoot |
Ottiene un oggetto che può essere usato per sincronizzare l'accesso a BitArray. |
Metodi
And(BitArray) |
Esegue l'operazione con AND bit per bit tra gli elementi dell'oggetto BitArray corrente e gli elementi corrispondenti nella matrice specificata. L'oggetto BitArray corrente verrà modificato per archiviare il risultato dell'operazione con AND bit per bit. |
Clone() |
Crea una copia superficiale di BitArray. |
CopyTo(Array, Int32) |
Copia l'intero oggetto BitArray in un oggetto Array compatibile unidimensionale, a partire dall'indice specificato della matrice di destinazione. |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
Get(Int32) |
Ottiene il valore del bit in una posizione specifica nella BitArray. |
GetEnumerator() |
Restituisce un enumeratore che esegue l'iterazione di BitArray. |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
HasAllSet() |
Determina se tutti i bit in BitArray sono impostati su |
HasAnySet() |
Determina se un bit in BitArray è impostato su |
LeftShift(Int32) |
Sposta tutti i valori di bit dell'oggetto BitArray corrente a sinistra del numero di bit specificato da |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
Not() |
Consente di invertire tutti i valori dei bit nella BitArray corrente in modo che gli elementi impostati su |
Or(BitArray) |
Esegue l'operazione con OR bit per bit tra gli elementi dell'oggetto BitArray corrente e gli elementi corrispondenti nella matrice specificata. L'oggetto BitArray corrente verrà modificato per archiviare il risultato dell'operazione con OR bit per bit. |
RightShift(Int32) |
Sposta tutti i valori di bit dell'oggetto BitArray corrente a destra di un numero di bit pari a |
Set(Int32, Boolean) |
Imposta il bit in una posizione specifica nell'oggetto BitArray sul valore specificato. |
SetAll(Boolean) |
Imposta tutti i bit dell'oggetto BitArray sul valore specificato. |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Xor(BitArray) |
Esegue l'operazione con OR esclusivo bit per bit tra gli elementi dell'oggetto BitArray corrente e gli elementi corrispondenti nella matrice specificata. L'oggetto BitArray corrente verrà modificato per archiviare il risultato dell'operazione con OR esclusivo bit per bit. |
Implementazioni dell'interfaccia esplicita
ICollection.CopyTo(Array, Int32) |
Copia gli elementi dell'oggetto BitArray in un oggetto Array, a partire da un indice Array specificato. |
ICollection.Count |
Ottiene il numero di elementi in BitArray. |
ICollection.IsSynchronized |
Ottiene un valore che indica se l'accesso a BitArray è sincronizzato (thread-safe). |
ICollection.SyncRoot |
Ottiene un oggetto che può essere usato per sincronizzare l'accesso a BitArray. |
Metodi di estensione
Cast<TResult>(IEnumerable) |
Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato. |
OfType<TResult>(IEnumerable) |
Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato. |
AsParallel(IEnumerable) |
Consente la parallelizzazione di una query. |
AsQueryable(IEnumerable) |
Converte un oggetto IEnumerable in un oggetto IQueryable. |
Si applica a
Thread safety
I membri statici pubblici (Shared
in Visual Basic) di questo tipo sono thread-safe. Non è invece garantita la sicurezza dei membri dell'istanza.
Questa implementazione non fornisce un wrapper sincronizzato (thread-safe) per un oggetto BitArray.
L'enumerazione di una raccolta non è di per sé una procedura thread-safe. Anche se una raccolta è sincronizzata, è possibile che venga modificata da altri thread, con conseguente generazione di un'eccezione da parte dell'enumeratore. Per garantire la protezione dei thread durante l'enumerazione, è possibile bloccare la raccolta per l'intera enumerazione oppure intercettare le eccezioni determinate dalle modifiche apportate da altri thread.