BitArray Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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 |
| 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 |
| 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 |
| 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 |
| 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.