BitArray 클래스

정의

부울로 나타나는 간단한 비트 값 배열을 관리합니다. 여기에서 true는 비트가 설정(1)되었음을 나타내고 false는 비트가 해제(0)되었음을 나타냅니다.Manages a compact array of bit values, which are represented as Booleans, where true indicates that the bit is on (1) and false indicates the bit is off (0).

public ref class BitArray sealed : ICloneable, System::Collections::ICollection
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public sealed class BitArray : ICloneable, System.Collections.ICollection
type BitArray = class
    interface ICollection
    interface ICloneable
    interface IEnumerable
Public NotInheritable Class BitArray
Implements ICloneable, ICollection
상속
BitArray
특성
구현

예제

다음 코드 예제에서는 BitArray을 만들고 초기화 하는 방법과 해당 값을 출력 하는 방법을 보여 줍니다.The following code example shows how to create and initialize a BitArray and how to print out its values.

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 클래스는 용량이 항상 카운트와 동일한 컬렉션 클래스입니다.The BitArray class is a collection class in which the capacity is always the same as the count. 요소는 Length 속성을 늘려서 BitArray에 추가 됩니다. Length 속성을 줄여서 요소가 삭제 됩니다.Elements are added to a BitArray by increasing the Length property; elements are deleted by decreasing the Length property. BitArray 크기는 클라이언트에 의해 제어 됩니다. BitArray 끝을 지나서 인덱싱하면 ArgumentExceptionthrow 됩니다. BitArray 클래스는 And, Or, Xor, Not, SetAll등의 필터를 사용 하 여 여러 요소를 한 번에 수정할 수 있는 메서드를 포함 하 여 다른 컬렉션에서 찾을 수 없는 메서드를 제공 합니다.The size of a BitArray is controlled by the client; indexing past the end of the BitArray throws an ArgumentException.The BitArray class provides methods that are not found in other collections, including those that allow multiple elements to be modified at once using a filter, such as And, Or, Xor , Not, and SetAll.

BitVector32 클래스는 BitArray와 동일한 기능을 제공 하지만 더 빠른 성능을 제공 하는 구조체입니다.The BitVector32 class is a structure that provides the same functionality as BitArray, but with faster performance. BitVector32는 값 형식 이므로 스택에 할당 되는 반면, BitArray는 참조 형식이 며 힙에 할당 되기 때문에 더 빠릅니다.BitVector32 is faster because it is a value type and therefore allocated on the stack, whereas BitArray is a reference type and, therefore, allocated on the heap.

System.Collections.Specialized.BitVector32는 정확히 32 비트를 저장할 수 있지만 BitArray는 가변 비트 수를 저장할 수 있습니다.System.Collections.Specialized.BitVector32 can store exactly 32 bits, whereas BitArray can store a variable number of bits. BitVector32는 비트 플래그와 작은 정수를 모두 저장 하므로 사용자에 게 노출 되지 않는 데이터에 적합 합니다.BitVector32 stores both bit flags and small integers, thereby making it ideal for data that is not exposed to the user. 그러나 필요한 비트 플래그의 수를 알 수 없거나, 변수가 변수 이거나, 32 보다 큰 경우 BitArray를 대신 사용 합니다.However, if the number of required bit flags is unknown, is variable, or is greater than 32, use BitArray instead.

BitArray System.Collections 네임 스페이스에 있습니다. BitVector32 System.Collections.Specialized 네임 스페이스에 있습니다.BitArray is in the System.Collections namespace; BitVector32 is in the System.Collections.Specialized namespace.

이 컬렉션의 요소는 정수 인덱스를 사용 하 여 액세스할 수 있습니다.Elements in this collection can be accessed using an integer index. 이 컬렉션의 인덱스는 0부터 시작 합니다.Indexes in this collection are zero-based.

생성자

BitArray(BitArray)

지정한 BitArray에서 복사된 비트 값을 포함하는 BitArray 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the BitArray class that contains bit values copied from the specified BitArray.

BitArray(Boolean[])

지정한 부울 배열에서 복사된 비트 값을 포함하는 BitArray 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the BitArray class that contains bit values copied from the specified array of Booleans.

BitArray(Byte[])

지정한 바이트 배열에서 복사된 비트 값을 포함하는 BitArray 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the BitArray class that contains bit values copied from the specified array of bytes.

BitArray(Int32)

지정한 비트 값을 보유할 수 있는 BitArray 클래스의 새 인스턴스를 초기화합니다. 이러한 값은 초기에 false로 설정됩니다.Initializes a new instance of the BitArray class that can hold the specified number of bit values, which are initially set to false.

BitArray(Int32, Boolean)

지정한 비트 값을 보유할 수 있는 BitArray 클래스의 새 인스턴스를 초기화합니다. 이러한 값은 초기에 지정된 값으로 설정됩니다.Initializes a new instance of the BitArray class that can hold the specified number of bit values, which are initially set to the specified value.

BitArray(Int32[])

지정한 32비트 정수 배열에서 복사된 비트 값을 포함하는 BitArray 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the BitArray class that contains bit values copied from the specified array of 32-bit integers.

속성

Count

BitArray에 포함된 요소 수를 가져옵니다.Gets the number of elements contained in the BitArray.

IsReadOnly

BitArray이 읽기 전용인지를 표시하는 값을 가져옵니다.Gets a value indicating whether the BitArray is read-only.

IsSynchronized

BitArray에 대한 액세스가 동기화되어 스레드로부터 안전하게 보호되는지를 나타내는 값을 가져옵니다.Gets a value indicating whether access to the BitArray is synchronized (thread safe).

Item[Int32]

BitArray의 특정 위치에서 비트 값을 가져오거나 설정합니다.Gets or sets the value of the bit at a specific position in the BitArray.

Length

BitArray의 요소 수를 가져오거나 설정합니다.Gets or sets the number of elements in the BitArray.

SyncRoot

BitArray에 대한 액세스를 동기화하는 데 사용할 수 있는 개체를 가져옵니다.Gets an object that can be used to synchronize access to the BitArray.

메서드

And(BitArray)

현재 BitArray 개체의 요소와 지정한 배열의 해당 요소에 대해 비트 AND 연산을 수행합니다.Performs the bitwise AND operation between the elements of the current BitArray object and the corresponding elements in the specified array. 현재 BitArray 개체는 비트 AND 연산 결과 저장하도록 수정됩니다.The current BitArray object will be modified to store the result of the bitwise AND operation.

Clone()

BitArray의 부분 복사본을 만듭니다.Creates a shallow copy of the BitArray.

CopyTo(Array, Int32)

대상 배열의 지정된 인덱스에서 시작하여 전체 BitArray을 호환되는 1차원 Array에 복사합니다.Copies the entire BitArray to a compatible one-dimensional Array, starting at the specified index of the target array.

Equals(Object)

지정한 개체가 현재 개체와 같은지를 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
Get(Int32)

BitArray의 특정 위치에서 비트 값을 가져옵니다.Gets the value of the bit at a specific position in the BitArray.

GetEnumerator()

BitArray을 통해 반복하는 열거자를 반환합니다.Returns an enumerator that iterates through the BitArray.

GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
LeftShift(Int32)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
Not()

BitArray로 설정된 요소는 true로 변경되고 false로 설정된 요소는 false로 변경되도록 현재 true에 있는 모든 비트 값을 반전합니다.Inverts all the bit values in the current BitArray, so that elements set to true are changed to false, and elements set to false are changed to true.

Or(BitArray)

현재 BitArray 개체의 요소와 지정한 배열의 해당 요소에 대해 비트 OR 연산을 수행합니다.Performs the bitwise OR operation between the elements of the current BitArray object and the corresponding elements in the specified array. 현재 BitArray 개체는 비트 OR 연산 결과를 저장하도록 수정됩니다.The current BitArray object will be modified to store the result of the bitwise OR operation.

RightShift(Int32)
Set(Int32, Boolean)

BitArray의 특정 위치에 있는 비트를 지정한 값으로 설정합니다.Sets the bit at a specific position in the BitArray to the specified value.

SetAll(Boolean)

BitArray의 모든 비트를 지정한 값으로 설정합니다.Sets all bits in the BitArray to the specified value.

ToString()

현재 개체를 나타내는 string을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)
Xor(BitArray)

현재 BitArray 개체의 요소와 지정한 배열의 해당 요소에 대해 배타적 비트 OR 연산을 수행합니다.Performs the bitwise exclusive OR operation between the elements of the current BitArray object against the corresponding elements in the specified array. 현재 BitArray 개체는 배타적 비트 OR 연산 결과를 저장하도록 수정됩니다.The current BitArray object will be modified to store the result of the bitwise exclusive OR operation.

명시적 인터페이스 구현

ICollection.CopyTo(Array, Int32)

지정된 BitArray 인덱스부터 시작하여 Array의 요소를 Array에 복사합니다.Copies the elements of the BitArray to an Array, starting at the specified Array index.

ICollection.Count

BitArray의 요소 수를 가져옵니다.Gets the number of elements in the BitArray.

ICollection.IsSynchronized

BitArray에 대한 액세스가 동기화되어 스레드로부터 안전하게 보호되는지 여부를 나타내는 값을 가져옵니다.Gets a value that indicates whether access to the BitArray is synchronized (thread safe).

ICollection.SyncRoot

BitArray에 대한 액세스를 동기화하는 데 사용할 수 있는 개체를 가져옵니다.Gets an object that can be used to synchronize access to the BitArray.

확장 메서드

Cast<TResult>(IEnumerable)

IEnumerable의 요소를 지정된 형식으로 캐스팅합니다.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

지정된 형식에 따라 IEnumerable의 요소를 필터링합니다.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

쿼리를 병렬화할 수 있도록 합니다.Enables parallelization of a query.

AsQueryable(IEnumerable)

IEnumerableIQueryable로 변환합니다.Converts an IEnumerable to an IQueryable.

적용 대상

스레드 보안

공용 정적 (Shared Visual Basic의)이 형식의 멤버는 스레드로부터 안전 합니다.Public static (Shared in Visual Basic) members of this type are thread safe. 인스턴스 멤버는 스레드로부터의 안전이 보장되지 않습니다.Any instance members are not guaranteed to be thread safe.

이 구현에서는 BitArray에 대해 동기화 되어 스레드로부터 안전 하 게 보호 되는 래퍼를 제공 하지 않습니다.This implementation does not provide a synchronized (thread safe) wrapper for a BitArray.

컬렉션 전체를 열거하는 프로시저는 기본적으로 스레드로부터 안전하지 않습니다.Enumerating through a collection is intrinsically not a thread-safe procedure. 컬렉션이 동기화되어 있을 때 다른 스레드에서 해당 컬렉션을 수정할 수 있으므로 이렇게 되면 열거자에서 예외가 throw됩니다.Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. 열거하는 동안 스레드로부터 안전을 보장하려면 전체 열거를 수행하는 동안 컬렉션을 잠그거나 다른 스레드에서 변경된 내용으로 인해 발생한 예외를 catch하면 됩니다.To guarantee thread safety during enumeration, you can either lock the collection during the entire enumeration or catch the exceptions resulting from changes made by other threads.

추가 정보