Partager via


BitArray Classe

Définition

Gère un tableau compact de valeurs de bits, qui sont représentées en tant que booléens, où true indique que le bit est activé (1) et false indique que le bit est désactivé (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
Héritage
BitArray
Attributs
Implémente

Exemples

L’exemple de code suivant montre comment créer et initialiser un BitArray et comment imprimer ses valeurs.

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

Remarques

La BitArray classe est une classe de collection dans laquelle la capacité est toujours identique au nombre. Les éléments sont ajoutés à un BitArray en augmentant la Length propriété ; les éléments sont supprimés en réduisant la Length propriété. La taille d’un BitArray est contrôlée par le client ; l’indexation au-delà de la fin de la BitArray levée d’un ArgumentException. La BitArray classe fournit des méthodes qui ne sont pas trouvées dans d’autres collections, y compris celles qui permettent à plusieurs éléments d’être modifiés à la fois à l’aide d’un filtre, tel que And, , Or, Xor , Notet SetAll.

La BitVector32 classe est une structure qui fournit les mêmes fonctionnalités que BitArray, mais avec des performances plus rapides. BitVector32 est plus rapide, car il s’agit d’un type valeur et donc alloué sur la pile, tandis qu’il BitArray s’agit d’un type référence et, par conséquent, alloué sur le tas.

System.Collections.Specialized.BitVector32 peut stocker exactement 32 bits, tandis que BitArray peut stocker un nombre variable de bits. BitVector32 stocke à la fois les indicateurs de bits et les petits entiers, ce qui le rend idéal pour les données qui ne sont pas exposées à l’utilisateur. Toutefois, si le nombre d’indicateurs de bits requis est inconnu, est variable ou supérieur à 32, utilisez BitArray à la place.

BitArray se trouve dans l’espace System.Collections de noms ; BitVector32 se trouve dans l’espace System.Collections.Specialized de noms.

Les éléments de cette collection sont accessibles à l’aide d’un index entier. Les index de cette collection sont basés sur zéro.

Constructeurs

Nom Description
BitArray(BitArray)

Initialise une nouvelle instance de la BitArray classe qui contient des valeurs de bits copiées à partir du fichier spécifié BitArray.

BitArray(Boolean[])

Initialise une nouvelle instance de la BitArray classe qui contient des valeurs de bits copiées à partir du tableau spécifié de booléens.

BitArray(Byte[])

Initialise une nouvelle instance de la BitArray classe qui contient des valeurs de bits copiées à partir du tableau spécifié d’octets.

BitArray(Int32, Boolean)

Initialise une nouvelle instance de la BitArray classe qui peut contenir le nombre spécifié de valeurs de bits, qui sont initialement définies sur la valeur spécifiée.

BitArray(Int32)

Initialise une nouvelle instance de la BitArray classe qui peut contenir le nombre spécifié de valeurs de bits, qui sont initialement définies sur false.

BitArray(Int32[])

Initialise une nouvelle instance de la BitArray classe qui contient des valeurs de bits copiées à partir du tableau spécifié d’entiers 32 bits.

Propriétés

Nom Description
Count

Obtient le nombre d’éléments contenus dans le BitArray.

IsReadOnly

Obtient une valeur indiquant si l’objet BitArray est en lecture seule.

IsSynchronized

Obtient une valeur indiquant si l’accès à l’objet BitArray est synchronisé (thread safe).

Item[Int32]

Obtient ou définit la valeur du bit à une position spécifique dans le BitArray.

Length

Obtient ou définit le nombre d’éléments dans le BitArray.

SyncRoot

Obtient un objet qui peut être utilisé pour synchroniser l’accès BitArrayau .

Méthodes

Nom Description
And(BitArray)

Effectue l’opération AND au niveau du bit entre les éléments de l’objet actuel BitArray et les éléments correspondants dans le tableau spécifié. L’objet actuel BitArray sera modifié pour stocker le résultat de l’opération AND au niveau du bit.

Clone()

Crée une copie superficielle du BitArray.

CopyTo(Array, Int32)

Copie l’intégralité BitArray dans une dimension unidimensionnelle Arraycompatible, en commençant à l’index spécifié du tableau cible.

Equals(Object)

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
Get(Int32)

Obtient la valeur du bit à une position spécifique dans le BitArray.

GetEnumerator()

Retourne un énumérateur qui itère dans le BitArray.

GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
HasAllSet()

Détermine si tous les bits du fichier BitArray sont définis truesur .

HasAnySet()

Détermine si un bit dans le fichier BitArray est défini truesur .

LeftShift(Int32)

Déplace toutes les valeurs de bits du courant BitArray vers la gauche sur count les bits.

MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
Not()

Inverse toutes les valeurs de bits dans le fichier actuel BitArray, afin que les éléments définis true soient modifiés falseet que les éléments définis false soient modifiés trueen .

Or(BitArray)

Effectue l’opération OR au niveau du bit entre les éléments de l’objet actuel BitArray et les éléments correspondants dans le tableau spécifié. L’objet actuel BitArray sera modifié pour stocker le résultat de l’opération OR au niveau du bit.

PopCount()

Gère un tableau compact de valeurs de bits, qui sont représentées en tant que booléens, où true indique que le bit est activé (1) et false indique que le bit est désactivé (0).

RightShift(Int32)

Déplace toutes les valeurs de bits du courant BitArray vers la droite sur count les bits.

Set(Int32, Boolean)

Définit le bit à une position spécifique dans la BitArray valeur spécifiée.

SetAll(Boolean)

Définit tous les bits dans la BitArray valeur spécifiée.

ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)
Xor(BitArray)

Effectue l’opération OR exclusive au niveau du bit entre les éléments de l’objet actif BitArray par rapport aux éléments correspondants dans le tableau spécifié. L’objet actuel BitArray sera modifié pour stocker le résultat de l’opération OR exclusive au niveau du bit.

Implémentations d’interfaces explicites

Nom Description
ICollection.CopyTo(Array, Int32)

Copie les éléments de l’élément BitArray dans un Arrayindex spécifié, en commençant à l’index spécifié Array .

ICollection.Count

Obtient le nombre d’éléments dans le BitArray.

ICollection.IsSynchronized

Obtient une valeur qui indique si l’accès à l’objet BitArray est synchronisé (thread safe).

ICollection.SyncRoot

Obtient un objet qui peut être utilisé pour synchroniser l’accès BitArrayau .

Méthodes d’extension

Nom Description
AsParallel(IEnumerable)

Active la parallélisation d’une requête.

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.

Cast<TResult>(IEnumerable)

Convertit les éléments d’un IEnumerable en type spécifié.

OfType<TResult>(IEnumerable)

Filtre les éléments d’une IEnumerable en fonction d’un type spécifié.

S’applique à

Cohérence de thread

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'y a aucune garantie que les membres d’instance soient thread-safe.

Cette implémentation ne fournit pas de wrapper synchronisé (thread safe) pour un BitArray.

L’énumération par le biais d’une collection n’est intrinsèquement pas une procédure thread-safe. Même lorsqu’une collection est synchronisée, d’autres threads peuvent toujours modifier la collection, ce qui provoque la levée d’une exception par l’énumérateur. Pour garantir la sécurité des threads pendant l’énumération, vous pouvez verrouiller la collection pendant toute l’énumération ou intercepter les exceptions résultant des modifications apportées par d’autres threads.

Voir aussi