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 reprezentované 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 namespace System;
using namespace System::Collections;
void PrintValues( IEnumerable^ myList, int myWidth );
int main()
{
// Creates and initializes several BitArrays.
BitArray^ myBA1 = gcnew BitArray( 5 );
BitArray^ myBA2 = gcnew BitArray( 5,false );
array<Byte>^myBytes = {1,2,3,4,5};
BitArray^ myBA3 = gcnew BitArray( myBytes );
array<Boolean>^myBools = {true,false,true,true,false};
BitArray^ myBA4 = gcnew BitArray( myBools );
array<Int32>^myInts = {6,7,8,9,10};
BitArray^ myBA5 = gcnew 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 );
}
void PrintValues( IEnumerable^ myList, int myWidth )
{
int i = myWidth;
IEnumerator^ myEnum = myList->GetEnumerator();
while ( myEnum->MoveNext() )
{
Object^ obj = safe_cast<Object^>(myEnum->Current);
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
*/
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. Elementy jsou přidány do objektu BitArrayLength zvýšením vlastnosti; prvky jsou odstraněny snížením Length vlastnosti. Velikost objektu BitArray je řízena klientem; indexování za koncem BitArray objektu vyvolá výjimku ArgumentException. Třída BitArray poskytuje metody, které se v jiných kolekcích nenachází, včetně těch, které umožňují úpravu více prvků najednou pomocí filtru, jako Andjsou , Or, Xor , 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 to typ odkazu, a proto je přidělen na 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á jak bitové příznaky, tak malá celá čísla, takže je ideální pro data, která nejsou uživateli zpřístupněna. 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 místo toho.BitArray
BitArray je v System.Collections oboru názvů; BitVector32 je v oboru System.Collections.Specialized názvů.
K prvkům v této kolekci lze přistupovat pomocí celočíselného indexu. Indexy v této kolekci jsou založené na nule.
Konstruktory
BitArray(BitArray) |
Inicializuje novou instanci BitArray třídy, která obsahuje bitové hodnoty zkopírované ze zadaného BitArrayobjektu . |
BitArray(Boolean[]) |
Inicializuje novou instanci BitArray třídy, která obsahuje bitové hodnoty zkopírované ze zadaného pole Booleans. |
BitArray(Byte[]) |
Inicializuje novou instanci BitArray třídy, která obsahuje bitové hodnoty zkopírované ze zadaného pole bajtů. |
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, 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á obsahuje bitové hodnoty zkopírované ze zadaného pole 32bitových celých čísel. |
Vlastnosti
Count |
Získá počet elementů obsažených v objektu BitArray. |
IsReadOnly |
Získá hodnotu, která určuje, zda je BitArray určena jen pro čtení. |
IsSynchronized |
Získá hodnotu označující, zda přístup k objektu BitArray je synchronizován (bezpečný pro přístup z více vláken). |
Item[Int32] |
Získá nebo nastaví hodnotu bitu na konkrétní pozici v objektu BitArray. |
Length |
Získá nebo nastaví počet prvků v objektu BitArray. |
SyncRoot |
Získá objekt, který lze použít k synchronizaci přístupu k .BitArray |
Metody
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 upraven tak, aby se uložil výsledek bitové operace AND. |
Clone() |
Vytvoří mělkou kopii .BitArray |
CopyTo(Array, Int32) |
Zkopíruje celek BitArray do kompatibilního jednorozměrného Arrayobjektu počínaje zadaným indexem cílového pole. |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
Get(Int32) |
Získá hodnotu bitu na konkrétní pozici v BitArray. |
GetEnumerator() |
Vrátí enumerátor, který iteruje přes BitArray. |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
HasAllSet() |
Určuje, zda jsou všechny bity v souboru nastaveny BitArray na |
HasAnySet() |
Určuje, zda je jakýkoli bit v souboru BitArray nastaven na |
LeftShift(Int32) |
Posune všechny hodnoty bitů aktuálního na BitArray bitech doleva |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
Not() |
Invertuje všechny bitové hodnoty v aktuálním BitArrayobjektu tak, aby se elementy 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 upraven tak, aby se uložil výsledek bitové operace OR. |
RightShift(Int32) |
Posune všechny bitové hodnoty aktuálního BitArray kódu doprava na |
Set(Int32, Boolean) |
Nastaví bit na konkrétní pozici v na BitArray zadanou hodnotu. |
SetAll(Boolean) |
Nastaví všechny bity v souboru BitArray na zadanou hodnotu. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Xor(BitArray) |
Provede bitové exkluzivní operace OR mezi prvky aktuálního BitArray objektu proti odpovídajícím prvkům v zadaném poli. Aktuální BitArray objekt bude upraven tak, aby ukládaly výsledek operace bitové exkluzivní operace OR. |
Explicitní implementace rozhraní
ICollection.CopyTo(Array, Int32) |
Zkopíruje elementy BitArray do , počínaje zadaným Array indexemArray. |
ICollection.Count |
Získá počet prvků v objektu BitArray. |
ICollection.IsSynchronized |
Získá hodnotu, která označuje, zda přístup k objektu BitArray je synchronizován (bezpečný pro přístup z více vláken). |
ICollection.SyncRoot |
Získá objekt, který lze použít k synchronizaci přístupu k .BitArray |
Metody rozšíření
Cast<TResult>(IEnumerable) |
Přetypuje prvky objektu na IEnumerable zadaný typ. |
OfType<TResult>(IEnumerable) |
Filtruje prvky objektu IEnumerable na základě zadaného typu. |
AsParallel(IEnumerable) |
Umožňuje paralelizaci dotazu. |
AsQueryable(IEnumerable) |
Převede objekt na IEnumerableIQueryable. |
Platí pro
Bezpečný přístup z více vláken
Veřejné statické členy (Shared
v jazyce Visual Basic) tohoto typu jsou bezpečné pro přístup z více vláken. U členů instancí není zaručena bezpečnost pro přístup z více vláken.
Tato implementace neposkytuje synchronizovanou obálku (bezpečnou pro přístup z BitArrayvíce vláken) pro .
Výčet prostřednictvím kolekce nemůže být procedurou bezpečnou pro přístup z více vláken. I v případě, že jde o synchronizovanou kolekci, mohou úpravy provádět i ostatní vlákna, což způsobuje vyvolání výjimky enumerátorem. K zaručení bezpečnosti přístupu z více vláken můžete buďto zamknout kolekci na celou dobu práce s výčtem, nebo zachycovat výjimky vzniklé v důsledku změn prováděných ostatními vlákny.
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat Problémy GitHubu jako mechanismus zpětné vazby pro obsah a nahradíme ho novým systémem zpětné vazby. Další informace najdete tady:Odeslat a zobrazit názory pro