BitArray Klass

Definition

Hanterar en kompakt matris med bitvärden, som representeras som booleska värden, där true indikerar att biten är på (1) och false anger att biten är av (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
Arv
BitArray
Attribut
Implementeringar

Exempel

I följande kodexempel visas hur du skapar och initierar en BitArray och hur du skriver ut dess värden.

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

Kommentarer

Klassen BitArray är en samlingsklass där kapaciteten alltid är densamma som antalet. Element läggs till i en BitArray genom att öka Length egenskapen. Element tas bort genom att egenskapen minskas Length . Storleken på en BitArray styrs av klienten. Indexering förbi slutet av BitArray genererar en ArgumentException. Klassen BitArray innehåller metoder som inte finns i andra samlingar, inklusive de som tillåter att flera element ändras samtidigt med hjälp av ett filter, till exempel And, Or, Xor , Notoch SetAll.

Klassen BitVector32 är en struktur som ger samma funktioner som BitArray, men med snabbare prestanda. BitVector32 är snabbare eftersom det är en värdetyp och därför allokeras på stacken, medan BitArray är en referenstyp och därför allokeras på heapen.

System.Collections.Specialized.BitVector32 kan lagra exakt 32 bitar, medan BitArray kan lagra ett variabelt antal bitar. BitVector32 lagrar både bitflaggor och små heltal, vilket gör det idealiskt för data som inte exponeras för användaren. Men om antalet nödvändiga bitflaggor är okänt, är variabel eller större än 32 använder du BitArray i stället.

BitArray är i System.Collections namnområdet; BitVector32 finns i System.Collections.Specialized namnområdet.

Element i den här samlingen kan nås med hjälp av ett heltalsindex. Index i den här samlingen är nollbaserade.

Konstruktorer

Name Description
BitArray(BitArray)

Initierar en ny instans av BitArray klassen som innehåller bitvärden som kopierats från den angivna BitArray.

BitArray(Boolean[])

Initierar en ny instans av BitArray klassen som innehåller bitvärden som kopierats från den angivna matrisen med booleska värden.

BitArray(Byte[])

Initierar en ny instans av BitArray klassen som innehåller bitvärden som kopierats från den angivna bytematrisen.

BitArray(Int32, Boolean)

Initierar en ny instans av BitArray klassen som kan innehålla det angivna antalet bitvärden, som ursprungligen anges till det angivna värdet.

BitArray(Int32)

Initierar en ny instans av BitArray klassen som kan innehålla det angivna antalet bitvärden, som ursprungligen är inställda på false.

BitArray(Int32[])

Initierar en ny instans av BitArray klassen som innehåller bitvärden som kopierats från den angivna matrisen med 32-bitars heltal.

Egenskaper

Name Description
Count

Hämtar antalet element som finns i BitArray.

IsReadOnly

Hämtar ett värde som anger om är BitArray skrivskyddat.

IsSynchronized

Hämtar ett värde som anger om åtkomsten BitArray till är synkroniserad (trådsäker).

Item[Int32]

Hämtar eller anger värdet för biten vid en specifik position i BitArray.

Length

Hämtar eller anger antalet element i BitArray.

SyncRoot

Hämtar ett objekt som kan användas för att synkronisera åtkomsten BitArraytill .

Metoder

Name Description
And(BitArray)

Utför bitvis AND-åtgärden mellan elementen i det aktuella BitArray objektet och motsvarande element i den angivna matrisen. Det aktuella BitArray objektet ändras för att lagra resultatet av bitvis AND-åtgärden.

Clone()

Skapar en ytlig kopia av BitArray.

CopyTo(Array, Int32)

Kopierar hela BitArray till en kompatibel endimensionell Array, med början vid det angivna indexet för målmatrisen.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
Get(Int32)

Hämtar värdet för biten vid en specifik position i BitArray.

GetEnumerator()

Returnerar en uppräkning som itererar genom BitArray.

GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
LeftShift(Int32)

Flyttar alla bitvärden för den aktuella till BitArray vänster på count bitar.

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
Not()

Invertera alla bitvärden i den aktuella BitArray, så att de element som anges till true ändras till false, och element som anges till false ändras till true.

Or(BitArray)

Utför bitvis OR-åtgärden mellan elementen i det aktuella BitArray objektet och motsvarande element i den angivna matrisen. Det aktuella BitArray objektet ändras för att lagra resultatet av den bitvisa OR-åtgärden.

RightShift(Int32)

Flyttar alla bitvärden för den aktuella till BitArray höger på count bitar.

Set(Int32, Boolean)

Anger biten på en specifik position i BitArray till det angivna värdet.

SetAll(Boolean)

Anger alla bitar i det BitArray angivna värdet.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)
Xor(BitArray)

Utför den bitvis exklusiva OR-åtgärden mellan elementen i det aktuella BitArray objektet mot motsvarande element i den angivna matrisen. Det aktuella BitArray objektet ändras för att lagra resultatet av den bitvis exklusiva OR-åtgärden.

Explicita gränssnittsimplementeringar

Name Description
ICollection.CopyTo(Array, Int32)

Kopierar elementen i BitArray till en Array, med början vid det angivna Array indexet.

ICollection.Count

Hämtar antalet element i BitArray.

ICollection.IsSynchronized

Hämtar ett värde som anger om åtkomsten BitArray till är synkroniserad (trådsäker).

ICollection.SyncRoot

Hämtar ett objekt som kan användas för att synkronisera åtkomsten BitArraytill .

Tilläggsmetoder

Name Description
AsParallel(IEnumerable)

Möjliggör parallellisering av en fråga.

AsQueryable(IEnumerable)

Konverterar en IEnumerable till en IQueryable.

Cast<TResult>(IEnumerable)

Omvandlar elementen i en IEnumerable till den angivna typen.

OfType<TResult>(IEnumerable)

Filtrerar elementen i en IEnumerable baserat på en angiven typ.

Gäller för

Trådsäkerhet

Offentliga statiska (Shared i Visual Basic) medlemmar av den här typen är trådsäkra. Vilka som helst instansmedlemmar garanteras inte att vara trådsäkra.

Den här implementeringen tillhandahåller inte en synkroniserad (trådsäker) omslutning för en BitArray.

Att räkna upp genom en samling är i sig inte en trådsäker procedur. Även när en samling synkroniseras kan andra trådar fortfarande ändra samlingen, vilket gör att uppräknaren genererar ett undantag. För att garantera trådsäkerheten under uppräkningen kan du antingen låsa samlingen under hela uppräkningen eller fånga undantagen från ändringar som gjorts av andra trådar.

Se även