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 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
설명
BitArray 클래스는 용량이 항상 개수와 동일한 컬렉션 클래스입니다. 요소는 속성을 늘려 Length 에 BitArray 추가되고, 요소는 속성을 줄여 삭제됩니다Length. 의 BitArray 크기는 클라이언트에 의해 제어됩니다. 의 끝을 지나 인덱싱하면 BitArray 가 ArgumentExceptionthrow됩니다. 클래스는 BitArray , 및 와 같은 SetAllAndOrXorNot필터를 사용하여 한 번에 여러 요소를 수정할 수 있는 메서드를 포함하여 다른 컬렉션에서 찾을 수 없는 메서드를 제공합니다.
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) |
지정한 비트 값을 보유할 수 있는 BitArray 클래스의 새 인스턴스를 초기화합니다. 이러한 값은 초기에 |
BitArray(Int32, Boolean) |
지정한 비트 값을 보유할 수 있는 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() |
|
Or(BitArray) |
현재 BitArray 개체의 요소와 지정한 배열의 해당 요소에 대해 비트 OR 연산을 수행합니다. 현재 BitArray 개체는 비트 OR 연산 결과를 저장하도록 수정됩니다. |
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에 대한 액세스를 동기화하는 데 사용할 수 있는 개체를 가져옵니다. |
확장 메서드
Cast<TResult>(IEnumerable) |
IEnumerable의 요소를 지정된 형식으로 캐스팅합니다. |
OfType<TResult>(IEnumerable) |
지정된 형식에 따라 IEnumerable의 요소를 필터링합니다. |
AsParallel(IEnumerable) |
쿼리를 병렬화할 수 있도록 합니다. |
AsQueryable(IEnumerable) |
IEnumerable을 IQueryable로 변환합니다. |
적용 대상
스레드 보안
공용 정적 (Shared
Visual Basic의)이 형식의 멤버는 스레드로부터 안전 합니다. 인스턴스 구성원은 스레드로부터의 안전성이 보장되지 않습니다.
이 구현은 에 대해 동기화된(스레드로부터 안전한) 래퍼를 BitArray제공하지 않습니다.
컬렉션 전체를 열거하는 프로시저는 기본적으로 스레드로부터 안전하지 않습니다. 컬렉션이 동기화되어 있을 때 다른 스레드에서 해당 컬렉션을 수정할 수 있으므로 이렇게 되면 열거자에서 예외가 throw됩니다. 열거하는 동안 스레드로부터 안전을 보장하려면 전체 열거를 수행하는 동안 컬렉션을 잠그거나 다른 스레드에서 변경된 내용으로 인해 발생한 예외를 catch하면 됩니다.
추가 정보
.NET