Sdílet prostřednictvím


BitArray Třída

Definice

Spravuje kompaktní pole bitových hodnot, které jsou reprezentovány jako logické hodnoty, kde true označuje, že bit je zapnutý (1) a false označuje, že bit je vypnutý (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
Dědičnost
BitArray
Atributy
Implementuje

Příklady

Následující příklad kódu ukazuje, jak vytvořit a inicializovat BitArray a jak vytisknout jeho hodnoty.

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

Poznámky

Třída BitArray je třída kolekce, ve které je kapacita vždy stejná jako počet. Prvky jsou přidány do BitArray zvýšení Length vlastnosti; prvky jsou odstraněny snížením Length vlastnosti. Velikost objektu BitArray je řízena klientem; indexování za koncem BitArray vyvolá výjimku ArgumentException. BitArray Třída poskytuje metody, které nejsou nalezeny v jiných kolekcích, včetně těch, které umožňují úpravu více prvků najednou pomocí filtru, například And, , OrXor , Nota SetAll.

Třída BitVector32 je struktura, která poskytuje stejné funkce jako BitArray, ale s rychlejším výkonem. BitVector32 je rychlejší, protože se jedná o typ hodnoty, a proto je přidělen v zásobníku, zatímco BitArray je referenčním typem, a proto přidělený haldě.

System.Collections.Specialized.BitVector32 může ukládat přesně 32 bitů, zatímco BitArray může ukládat proměnlivý počet bitů. BitVector32 ukládá bitové příznaky i malá celá čísla, takže jsou ideální pro data, která nejsou uživateli vystavena. Pokud je však počet požadovaných bitových příznaků neznámý, je proměnná nebo je větší než 32, použijte BitArray místo toho.

BitArray je v System.Collections oboru názvů, BitVector32 je v System.Collections.Specialized oboru názvů.

K elementům v této kolekci lze přistupovat pomocí celočíselného indexu. Indexy v této kolekci jsou založené na nule.

Konstruktory

Name Description
BitArray(BitArray)

Inicializuje novou instanci BitArray třídy, která obsahuje bitové hodnoty zkopírované ze zadaného BitArray.

BitArray(Boolean[])

Inicializuje novou instanci BitArray třídy, která obsahuje bitové hodnoty zkopírované ze zadaného pole logických hodnot.

BitArray(Byte[])

Inicializuje novou instanci BitArray třídy, která obsahuje bitové hodnoty zkopírované ze zadaného pole bajtů.

BitArray(Int32, Boolean)

Inicializuje novou instanci BitArray třídy, která může obsahovat zadaný počet bitových hodnot, které jsou původně nastaveny na zadanou hodnotu.

BitArray(Int32)

Inicializuje novou instanci BitArray třídy, která může obsahovat zadaný počet bitových hodnot, které jsou původně nastaveny na false.

BitArray(Int32[])

Inicializuje novou instanci BitArray třídy, která obsahuje bitové hodnoty zkopírované ze zadaného pole 32bitových celých čísel.

Vlastnosti

Name Description
Count

Získá počet prvků obsažených v objektu BitArray.

IsReadOnly

Získá hodnotu určující, zda je jen pro BitArray čtení.

IsSynchronized

Získá hodnotu označující, zda je přístup k BitArray této synchronizaci (bezpečné vlákno).

Item[Int32]

Získá nebo nastaví hodnotu bitu na konkrétní pozici v objektu BitArray.

Length

Získá nebo nastaví počet prvků v .BitArray

SyncRoot

Získá objekt, který lze použít k synchronizaci přístupu k BitArray.

Metody

Name Description
And(BitArray)

Provede bitové operace AND mezi prvky aktuálního BitArray objektu a odpovídajícími prvky v zadaném poli. Aktuální BitArray objekt bude změněn tak, aby uložil výsledek bitové operace AND.

Clone()

Vytvoří mělkou kopii BitArray.

CopyTo(Array, Int32)

Zkopíruje celý BitArray soubor do kompatibilního jednorozměrného Array, počínaje zadaným indexem cílového pole.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
Get(Int32)

Získá hodnotu bitu na konkrétní pozici v objektu BitArray.

GetEnumerator()

Vrátí enumerátor, který iteruje přes BitArray.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
HasAllSet()

Určuje, zda jsou všechny bity v souboru BitArray nastaveny na true.

HasAnySet()

Určuje, zda je jakýkoli bit v sadě BitArray nastaven na true.

LeftShift(Int32)

Posune všechny bitové hodnoty aktuálního nalevo BitArray u count bitů.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
Not()

Invertuje všechny bitové hodnoty v aktuálním BitArray, aby prvky nastavené na falsetrue , a prvky nastavené na falsetrue.

Or(BitArray)

Provede bitové operace OR mezi prvky aktuálního BitArray objektu a odpovídajícími prvky v zadaném poli. Aktuální BitArray objekt bude změněn tak, aby uložil výsledek bitové operace OR.

PopCount()

Spravuje kompaktní pole bitových hodnot, které jsou reprezentovány jako logické hodnoty, kde true označuje, že bit je zapnutý (1) a false označuje, že bit je vypnutý (0).

RightShift(Int32)

Posune všechny bitové hodnoty aktuálního na BitArray bitech doprava count .

Set(Int32, Boolean)

Nastaví bit na konkrétní pozici v BitArray zadané hodnotě.

SetAll(Boolean)

Nastaví všechny bity v BitArray zadané hodnotě.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
Xor(BitArray)

Provede bitové výhradní operace OR mezi prvky aktuálního BitArray objektu proti odpovídajícím prvkům v zadaném poli. Aktuální BitArray objekt se upraví tak, aby ukládaly výsledek bitové exkluzivní operace OR.

Explicitní implementace rozhraní

Name Description
ICollection.CopyTo(Array, Int32)

Zkopíruje prvky do objektu BitArrayArray, počínaje zadaným Array indexem.

ICollection.Count

Získá počet prvků v .BitArray

ICollection.IsSynchronized

Získá hodnotu, která označuje, zda je přístup k BitArray synchronizován (bezpečné vlákno).

ICollection.SyncRoot

Získá objekt, který lze použít k synchronizaci přístupu k BitArray.

Metody rozšíření

Name Description
AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede IEnumerable na IQueryable.

Cast<TResult>(IEnumerable)

Přetypuje prvky IEnumerable na zadaný typ.

OfType<TResult>(IEnumerable)

Filtruje prvky IEnumerable na základě zadaného typu.

Platí pro

Bezpečný přístup z více vláken

Veřejné statické členy tohoto typu (Shared v jazyce Visual Basic) jsou bezpečné pro přístup z více vláken. U žádného člena instance není zaručena bezpečnost pro přístup z více vláken.

Tato implementace neposkytuje synchronizovaný (bezpečný vlákno) obálku BitArraypro .

Výčet prostřednictvím kolekce není vnitřně bezpečným postupem pro přístup z více vláken. I když je kolekce synchronizována, ostatní vlákna mohou stále upravovat kolekci, což způsobí, že enumerátor vyvolá výjimku. Chcete-li zaručit bezpečnost vláken během výčtu, můžete buď uzamknout kolekci během celého výčtu, nebo zachytit výjimky vyplývající z změn provedených jinými vlákny.

Viz také