BitArray クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ビット値のコンパクトな配列を管理します。これはブール値として表されます。ここで、 true はビットがオン (1) であることを示し、 false はビットがオフ (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
- 継承
-
BitArray
- 属性
- 実装
例
次のコード例は、 BitArray を作成して初期化する方法と、その値を出力する方法を示しています。
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
注釈
BitArray クラスは、容量が常にカウントと同じコレクション クラスです。 要素は、Length プロパティを増やすことでBitArrayに追加されます。要素は、Length プロパティを小さくすることで削除されます。 BitArrayのサイズはクライアントによって制御されます。BitArrayの末尾を越えてインデックスを作成すると、ArgumentExceptionがスローされます。 BitArray クラスには、And、Or、Xor、Not、SetAllなどのフィルターを使用して複数の要素を一度に変更できるメソッドなど、他のコレクションにはないメソッドが用意されています。
BitVector32 クラスは、BitArrayと同じ機能を提供するが、パフォーマンスが向上する構造体です。 BitVector32 は値型であるため、スタックに割り当てられるため高速です。一方、 BitArray は参照型であるため、ヒープに割り当てられます。
System.Collections.Specialized.BitVector32 は正確に 32 ビットを格納できますが、 BitArray は可変ビット数を格納できます。 BitVector32 はビット フラグと小さな整数の両方を格納するため、ユーザーに公開されていないデータに最適です。 ただし、必要なビット フラグの数が不明な場合、変数である場合、または 32 を超える場合は、代わりに BitArray を使用します。
BitArray は System.Collections 名前空間にあります。 BitVector32 は System.Collections.Specialized 名前空間にあります。
このコレクション内の要素には、整数インデックスを使用してアクセスできます。 このコレクション内のインデックスは 0 から始まります。
コンストラクター
| 名前 | 説明 |
|---|---|
| BitArray(BitArray) | |
| BitArray(Boolean[]) |
指定したブール値の配列からコピーされたビット値を含む BitArray クラスの新しいインスタンスを初期化します。 |
| BitArray(Byte[]) |
指定したバイト配列からコピーされたビット値を含む BitArray クラスの新しいインスタンスを初期化します。 |
| BitArray(Int32, Boolean) |
指定した数のビット値を保持できる BitArray クラスの新しいインスタンスを初期化します。このインスタンスは、最初は指定した値に設定されます。 |
| BitArray(Int32) |
指定した数のビット値を保持できる BitArray クラスの新しいインスタンスを初期化します。この値は、最初は |
| BitArray(Int32[]) |
指定した 32 ビット整数配列からコピーされたビット値を含む、 BitArray クラスの新しいインスタンスを初期化します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| Count |
BitArrayに含まれる要素の数を取得します。 |
| IsReadOnly |
BitArrayが読み取り専用かどうかを示す値を取得します。 |
| IsSynchronized |
BitArrayへのアクセスが同期されているかどうかを示す値を取得します (スレッド セーフ)。 |
| Item[Int32] |
BitArray内の特定の位置にあるビットの値を取得または設定します。 |
| Length |
BitArray内の要素の数を取得または設定します。 |
| SyncRoot |
BitArrayへのアクセスを同期するために使用できるオブジェクトを取得します。 |
メソッド
| 名前 | 説明 |
|---|---|
| And(BitArray) |
現在の BitArray オブジェクトの要素と、指定した配列内の対応する要素の間でビットごとの AND 演算を実行します。 現在の BitArray オブジェクトは、ビットごとの AND 演算の結果を格納するように変更されます。 |
| Clone() |
BitArrayの簡易コピーを作成します。 |
| CopyTo(Array, Int32) | |
| Equals(Object) |
指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
| Get(Int32) |
BitArray内の特定の位置にあるビットの値を取得します。 |
| GetEnumerator() |
BitArrayを反復処理する列挙子を返します。 |
| GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
| GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
| HasAllSet() |
BitArray内のすべてのビットが |
| HasAnySet() |
BitArray内のビットが |
| LeftShift(Int32) |
現在の BitArray のすべてのビット値を、 |
| MemberwiseClone() |
現在の Objectの簡易コピーを作成します。 (継承元 Object) |
| Not() |
現在の BitArray内のすべてのビット値を反転し、 |
| Or(BitArray) |
現在の BitArray オブジェクトの要素と、指定した配列内の対応する要素の間でビットごとの OR 演算を実行します。 現在の BitArray オブジェクトは、ビットごとの OR 演算の結果を格納するように変更されます。 |
| PopCount() |
ビット値のコンパクトな配列を管理します。これはブール値として表されます。ここで、 |
| RightShift(Int32) |
現在の BitArray のすべてのビット値を、 |
| Set(Int32, Boolean) |
BitArray内の特定の位置にあるビットを指定した値に設定します。 |
| SetAll(Boolean) |
BitArray内のすべてのビットを指定した値に設定します。 |
| ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
| Xor(BitArray) |
現在の BitArray オブジェクトの要素間で、指定した配列内の対応する要素に対してビットごとの排他的 OR 演算を実行します。 現在の BitArray オブジェクトは、ビットごとの排他的 OR 演算の結果を格納するように変更されます。 |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| ICollection.CopyTo(Array, Int32) | |
| ICollection.Count |
BitArray内の要素の数を取得します。 |
| ICollection.IsSynchronized |
BitArray へのアクセスが同期される (スレッド セーフ) かどうかを示す値を取得します。 |
| ICollection.SyncRoot |
BitArrayへのアクセスを同期するために使用できるオブジェクトを取得します。 |
拡張メソッド
| 名前 | 説明 |
|---|---|
| AsParallel(IEnumerable) |
クエリの並列化を有効にします。 |
| AsQueryable(IEnumerable) |
IEnumerable を IQueryableに変換します。 |
| Cast<TResult>(IEnumerable) |
IEnumerable の要素を指定した型にキャストします。 |
| OfType<TResult>(IEnumerable) |
指定した型に基づいて、IEnumerable の要素をフィルター処理します。 |
適用対象
スレッド セーフ
この型のパブリック静的 (Visual Basic のShared ) メンバーはスレッド セーフです。 インスタンス メンバーがスレッド セーフであるとは限りません。
この実装では、 BitArrayの同期 (スレッド セーフ) ラッパーは提供されません。
コレクションを列挙することは、本質的にスレッド セーフなプロシージャではありません。 コレクションが同期されている場合でも、他のスレッドはコレクションを変更できるため、列挙子は例外をスローします。 列挙中のスレッド セーフを保証するには、列挙全体の間にコレクションをロックするか、他のスレッドによって行われた変更によって発生する例外をキャッチします。