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 valori booleani, dove true indica che il bit è attivo (1) e false indica che il bit è disattivato (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 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 di modificare più elementi contemporaneamente usando un filtro, ad esempio And, OrXor , Not, e 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 i flag di bit che i numeri interi di piccole dimensioni, rendendoli quindi ideali 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 spazio dei System.Collections nomi; BitVector32 è 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
| Nome | Descrizione |
|---|---|
| BitArray(BitArray) |
Inizializza una nuova istanza della BitArray classe che contiene i valori di bit copiati dall'oggetto specificato BitArray. |
| BitArray(Boolean[]) |
Inizializza una nuova istanza della BitArray classe che contiene i valori di bit copiati dalla matrice di valori booleani specificata. |
| BitArray(Byte[]) |
Inizializza una nuova istanza della BitArray classe che contiene i valori di bit copiati dalla matrice di byte specificata. |
| BitArray(Int32, Boolean) |
Inizializza una nuova istanza della BitArray classe che può contenere il numero specificato di valori di bit, inizialmente impostati sul valore specificato. |
| BitArray(Int32) |
Inizializza una nuova istanza della BitArray classe che può contenere il numero specificato di valori di bit, inizialmente impostati su |
| BitArray(Int32[]) |
Inizializza una nuova istanza della BitArray classe che contiene i valori di bit copiati dalla matrice specificata di interi a 32 bit. |
Proprietà
| Nome | Descrizione |
|---|---|
| Count |
Ottiene il numero di elementi contenuti in BitArray. |
| IsReadOnly |
Ottiene un valore che indica se l'oggetto BitArray è di sola lettura. |
| IsSynchronized |
Ottiene un valore che indica se l'accesso BitArray a è sincronizzato (thread-safe). |
| Item[Int32] |
Ottiene o imposta il valore del bit in una posizione specifica nell'oggetto BitArray. |
| Length |
Ottiene o imposta il numero di elementi nell'oggetto BitArray. |
| SyncRoot |
Ottiene un oggetto che può essere utilizzato per sincronizzare l'accesso all'oggetto BitArray. |
Metodi
| Nome | Descrizione |
|---|---|
| And(BitArray) |
Esegue l'operazione AND bit per bit tra gli elementi dell'oggetto corrente BitArray e gli elementi corrispondenti nella matrice specificata. L'oggetto corrente BitArray verrà modificato per archiviare il risultato dell'operazione AND bit per bit. |
| Clone() |
Crea una copia superficiale dell'oggetto BitArray. |
| CopyTo(Array, Int32) |
Copia l'intero BitArray oggetto in un oggetto unidimensionale Arraycompatibile, 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 in BitArray. |
| GetEnumerator() |
Restituisce un enumeratore che scorre l'oggetto BitArray. |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetType() |
Ottiene il 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 corrente BitArray a sinistra sui |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| Not() |
Inverte tutti i valori di bit nell'oggetto corrente BitArray, in modo che gli elementi impostati |
| Or(BitArray) |
Esegue l'operazione OR bit per bit tra gli elementi dell'oggetto corrente BitArray e gli elementi corrispondenti nella matrice specificata. L'oggetto corrente BitArray verrà modificato per archiviare il risultato dell'operazione OR bit per bit. |
| PopCount() |
Gestisce una matrice compatta di valori di bit, rappresentati come valori booleani, dove |
| RightShift(Int32) |
Sposta tutti i valori di bit dell'oggetto corrente BitArray a destra sui |
| Set(Int32, Boolean) |
Imposta il bit in una posizione specifica nell'oggetto BitArray sul valore specificato. |
| SetAll(Boolean) |
Imposta tutti i bit nell'oggetto BitArray sul valore specificato. |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
| Xor(BitArray) |
Esegue l'operazione OR esclusivo bit per bit tra gli elementi dell'oggetto corrente BitArray rispetto agli elementi corrispondenti nella matrice specificata. L'oggetto corrente BitArray verrà modificato per archiviare il risultato dell'operazione OR esclusivo bit per bit. |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| ICollection.CopyTo(Array, Int32) |
Copia gli elementi di in BitArray un Arrayoggetto , a partire dall'indice specificato Array . |
| ICollection.Count |
Ottiene il numero di elementi nell'oggetto BitArray. |
| ICollection.IsSynchronized |
Ottiene un valore che indica se l'accesso al BitArray è sincronizzato (thread-safe). |
| ICollection.SyncRoot |
Ottiene un oggetto che può essere utilizzato per sincronizzare l'accesso all'oggetto BitArray. |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| AsParallel(IEnumerable) |
Abilita la parallelizzazione di una query. |
| AsQueryable(IEnumerable) |
Converte un IEnumerable in un IQueryable. |
| Cast<TResult>(IEnumerable) |
Esegue il cast degli elementi di un IEnumerable al tipo specificato. |
| OfType<TResult>(IEnumerable) |
Filtra gli elementi di un IEnumerable in base a un tipo specificato. |
Si applica a
Thread safety
I membri statici pubblici (Shared in Visual Basic) di questo tipo sono thread-safe. Non è garantito che tutti i membri dell'istanza siano thread-safe.
Questa implementazione non fornisce un wrapper sincronizzato (thread-safe) per un oggetto BitArray.
L'enumerazione tramite una raccolta non è intrinsecamente una procedura thread-safe. Anche quando una raccolta viene sincronizzata, altri thread possono comunque modificare la raccolta, causando la generazione di un'eccezione da parte dell'enumeratore. Per garantire la thread safety durante l'enumerazione, è possibile bloccare la raccolta durante l'intera enumerazione o intercettare le eccezioni risultanti dalle modifiche apportate da altri thread.