Lire en anglais

Partager via


BitArray Classe

Définition

Gère un tableau compact de valeurs de bit représentées par des valeurs booléennes, où true indique que le bit est activé (1) et false que le bit est désactivé (0).

C#
public sealed class BitArray : System.Collections.ICollection
C#
public sealed class BitArray : ICloneable, System.Collections.ICollection
C#
[System.Serializable]
public sealed class BitArray : ICloneable, System.Collections.ICollection
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class BitArray : ICloneable, System.Collections.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.

C#
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
*/

Remarques

La BitArray classe est une classe de collection dans laquelle la capacité est toujours la même que le nombre. Les éléments sont ajoutés à un BitArray en augmentant la Length propriété ; les éléments sont supprimés en diminuant la Length propriété . La taille d’un BitArray est contrôlée par le client ; l’indexation au-delà de la fin du BitArray lève un ArgumentException. La BitArray classe fournit des méthodes introuvables dans d’autres collections, notamment celles qui permettent de modifier plusieurs éléments à la fois à l’aide d’un filtre, tel que And, OrXor , , 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 que BitArray est 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 est dans l’espace System.Collections de noms ; BitVector32 est dans l’espace de System.Collections.Specialized noms .

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

Constructeurs

BitArray(BitArray)

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

BitArray(Boolean[])

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

BitArray(Byte[])

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

BitArray(Int32)

Initialise une nouvelle instance de la classe BitArray qui peut contenir le nombre spécifié de valeurs de bit, dont la valeur initiale est false.

BitArray(Int32, Boolean)

Initialise une nouvelle instance de la classe BitArray qui peut contenir le nombre spécifié de valeurs de bit auxquelles la valeur spécifiée est affectée initialement.

BitArray(Int32[])

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

Propriétés

Count

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

IsReadOnly

Obtient une valeur indiquant si BitArray est en lecture seule.

IsSynchronized

Obtient une valeur indiquant si l’accès à 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 du BitArray.

SyncRoot

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

Méthodes

And(BitArray)

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

Clone()

Crée une copie superficielle de BitArray.

CopyTo(Array, Int32)

Copie l'ensemble de l'objet BitArray vers un objet Array unidimensionnel compatible, 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 au sein de BitArray.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
HasAllSet()

Détermine si tous les bits du BitArray sont définis sur true.

HasAnySet()

Détermine si un bit du BitArray est défini sur true.

LeftShift(Int32)

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

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
Not()

Inverse toutes les valeurs de bits dans le BitArray en cours, de sorte que les éléments ayant la valeur true prennent la valeur false et que les éléments ayant la valeur false prennent la valeur true.

Or(BitArray)

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

RightShift(Int32)

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

Set(Int32, Boolean)

Affecte la valeur spécifiée au bit à une position spécifique dans le BitArray.

SetAll(Boolean)

Affecte la valeur spécifiée à tous les bits de BitArray.

ToString()

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

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

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

Implémentations d’interfaces explicites

ICollection.CopyTo(Array, Int32)

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

ICollection.Count

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

ICollection.IsSynchronized

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

ICollection.SyncRoot

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

Méthodes d’extension

Cast<TResult>(IEnumerable)

Effectue un cast des éléments d'un IEnumerable vers le type spécifié.

OfType<TResult>(IEnumerable)

Filtre les éléments d'un IEnumerable en fonction du type spécifié.

AsParallel(IEnumerable)

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

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.

S’applique à

Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Cohérence de thread

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Tous les membres de l'instance ne sont pas garantis comme étant thread-safe.

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

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

Voir aussi