BitArray Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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 |
| 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 |
| HasAnySet() |
Určuje, zda je jakýkoli bit v sadě BitArray nastaven na |
| LeftShift(Int32) |
Posune všechny bitové hodnoty aktuálního nalevo BitArray u |
| 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 |
| 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 |
| RightShift(Int32) |
Posune všechny bitové hodnoty aktuálního na BitArray bitech doprava |
| 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.