BitArray Klas

Definitie

Hiermee beheert u een compacte matrix met bitwaarden, die worden weergegeven als Booleaanse waarden, waarbij true wordt aangegeven dat de bit is ingeschakeld (1) en false aangeeft dat de bit is uitgeschakeld (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
[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
public sealed class BitArray : ICloneable, System.Collections.ICollection
type BitArray = class
    interface ICollection
    interface IEnumerable
[<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
type BitArray = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
Public NotInheritable Class BitArray
Implements ICollection
Public NotInheritable Class BitArray
Implements ICloneable, ICollection
Overname
BitArray
Kenmerken
Implementeringen

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u een BitArray en hoe u de waarden ervan kunt maken en initialiseren.

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

Opmerkingen

De BitArray klasse is een verzamelingsklasse waarin de capaciteit altijd hetzelfde is als het aantal. Elementen worden toegevoegd aan een BitArray door de Length eigenschap te vergroten; elementen worden verwijderd door de Length eigenschap te verlagen. De grootte van een BitArray wordt beheerd door de client; indexering voorbij het einde van de BitArray werpt een ArgumentException. De BitArray klasse biedt methoden die niet worden gevonden in andere verzamelingen, waaronder methoden waarmee meerdere elementen tegelijk kunnen worden gewijzigd met behulp van een filter, zoals And, Or, Xor , en NotSetAll.

De BitVector32 klasse is een structuur die dezelfde functionaliteit biedt als BitArray, maar met snellere prestaties. BitVector32 is sneller omdat het een waardetype is en daarom is toegewezen aan de stack, terwijl dit BitArray een verwijzingstype is en daarom is toegewezen aan de heap.

System.Collections.Specialized.BitVector32 kan exact 32 bits opslaan, terwijl BitArray een variabel aantal bits kan worden opgeslagen. BitVector32 slaat zowel bitvlagmen als kleine gehele getallen op, waardoor deze ideaal is voor gegevens die niet zichtbaar zijn voor de gebruiker. Als het aantal vereiste bitvlagmen echter onbekend is, variabel is of groter is dan 32, gebruikt BitArray u in plaats daarvan.

BitArray zich in de System.Collections naamruimte bevindt; BitVector32 bevindt zich in de System.Collections.Specialized naamruimte.

Elementen in deze verzameling kunnen worden benaderd met behulp van een integer-index. Indexen in deze verzameling zijn gebaseerd op nul.

Constructors

Name Description
BitArray(BitArray)

Initialiseert een nieuw exemplaar van de BitArray klasse die bitwaarden bevat die zijn gekopieerd uit de opgegeven BitArray.

BitArray(Boolean[])

Initialiseert een nieuw exemplaar van de BitArray klasse die bitwaarden bevat die zijn gekopieerd uit de opgegeven matrix van Booleaanse waarden.

BitArray(Byte[])

Initialiseert een nieuw exemplaar van de BitArray klasse die bitwaarden bevat die zijn gekopieerd uit de opgegeven matrix van bytes.

BitArray(Int32, Boolean)

Initialiseert een nieuw exemplaar van de BitArray klasse dat het opgegeven aantal bitwaarden kan bevatten, die in eerste instantie zijn ingesteld op de opgegeven waarde.

BitArray(Int32)

Initialiseert een nieuw exemplaar van de BitArray klasse waarin het opgegeven aantal bitwaarden kan worden opgeslagen, die in eerste instantie zijn ingesteld op false.

BitArray(Int32[])

Initialiseert een nieuw exemplaar van de BitArray klasse die bitwaarden bevat die zijn gekopieerd uit de opgegeven matrix van 32-bits gehele getallen.

Eigenschappen

Name Description
Count

Hiermee haalt u het aantal elementen op dat is opgenomen in de BitArray.

IsReadOnly

Hiermee wordt een waarde opgehaald die aangeeft of het BitArray kenmerk Alleen-lezen is.

IsSynchronized

Hiermee wordt een waarde opgehaald die aangeeft of de toegang tot de BitArray synchronisatie is gesynchroniseerd (thread safe).

Item[Int32]

Hiermee haalt of stelt u de waarde van de bit op een specifieke positie in de BitArray.

Length

Hiermee haalt of stelt u het aantal elementen in de BitArray.

SyncRoot

Hiermee haalt u een object op dat kan worden gebruikt om de toegang tot het BitArrayobject te synchroniseren.

Methoden

Name Description
And(BitArray)

Voert de bitsgewijze AND-bewerking uit tussen de elementen van het huidige BitArray object en de bijbehorende elementen in de opgegeven matrix. Het huidige BitArray object wordt gewijzigd om het resultaat van de bitsgewijze AND-bewerking op te slaan.

Clone()

Maakt een ondiepe kopie van de BitArray.

CopyTo(Array, Int32)

Kopieert het hele BitArray naar een compatibele eendimensionale Arraywaarde, beginnend bij de opgegeven index van de doelmatrix.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
Get(Int32)

Hiermee haalt u de waarde van de bit op een specifieke positie in de BitArray.

GetEnumerator()

Retourneert een enumerator die door de BitArray.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
LeftShift(Int32)

Hiermee worden alle bitwaarden van de huidige BitArray links op bits verplaatst count .

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
Not()

Hiermee worden alle bitwaarden in de huidige BitArrayomkeren, zodat de elementen die zijn ingesteld true op worden gewijzigd falseen de elementen false worden gewijzigd truein .

Or(BitArray)

Voert de bitsgewijze OR-bewerking uit tussen de elementen van het huidige BitArray object en de bijbehorende elementen in de opgegeven matrix. Het huidige BitArray object wordt gewijzigd om het resultaat van de bitsgewijze OR-bewerking op te slaan.

RightShift(Int32)

Hiermee worden alle bitwaarden van de huidige BitArray naar rechts op bits verplaatst count .

Set(Int32, Boolean)

Hiermee stelt u de bit op een specifieke positie in de BitArray opgegeven waarde in.

SetAll(Boolean)

Hiermee stelt u alle bits in de BitArray opgegeven waarde in.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)
Xor(BitArray)

Voert de bitsgewijze exclusieve OR-bewerking uit tussen de elementen van het huidige BitArray object op basis van de bijbehorende elementen in de opgegeven matrix. Het huidige BitArray object wordt gewijzigd om het resultaat van de bitsgewijze exclusieve OR-bewerking op te slaan.

Expliciete interface-implementaties

Name Description
ICollection.CopyTo(Array, Int32)

Kopieert de elementen van de BitArray naar een Array, beginnend bij de opgegeven Array index.

ICollection.Count

Hiermee wordt het aantal elementen in de BitArray.

ICollection.IsSynchronized

Hiermee wordt een waarde opgehaald die aangeeft of de toegang tot de BitArray verbinding is gesynchroniseerd (thread veilig).

ICollection.SyncRoot

Hiermee haalt u een object op dat kan worden gebruikt om de toegang tot het BitArrayobject te synchroniseren.

Extensiemethoden

Name Description
AsParallel(IEnumerable)

Hiermee schakelt u parallelle uitvoering van een query in.

AsQueryable(IEnumerable)

Converteert een IEnumerable naar een IQueryable.

Cast<TResult>(IEnumerable)

Cast de elementen van een IEnumerable naar het opgegeven type.

OfType<TResult>(IEnumerable)

Hiermee filtert u de elementen van een IEnumerable op basis van een opgegeven type.

Van toepassing op

Veiligheid thread

Openbare statische (Shared in Visual Basic) leden van dit type zijn thread-veilig. Exemplaarleden zijn niet gegarandeerd thread-safe.

Deze implementatie biedt geen gesynchroniseerde (thread safe) wrapper voor een BitArray.

Het inventariseren via een verzameling is intrinsiek geen thread-veilige procedure. Zelfs wanneer een verzameling wordt gesynchroniseerd, kunnen andere threads de verzameling nog steeds wijzigen, waardoor de enumerator een uitzondering genereert. Om de veiligheid van threads tijdens de inventarisatie te garanderen, kunt u de verzameling vergrendelen tijdens de volledige inventarisatie of de uitzonderingen ondervangen die het gevolg zijn van wijzigingen die door andere threads zijn aangebracht.

Zie ook