Condividi tramite


BitArray Classe

Definizione

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 false.

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 true.

HasAnySet()

Determina se un bit in BitArray è impostato su true.

LeftShift(Int32)

Sposta tutti i valori di bit dell'oggetto corrente BitArray a sinistra sui count bit.

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 true su vengano modificati falsein e gli elementi impostati su false vengono modificati in true.

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 true indica che il bit è attivo (1) e false indica che il bit è disattivato (0).

RightShift(Int32)

Sposta tutti i valori di bit dell'oggetto corrente BitArray a destra sui count bit.

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.

Vedi anche