Freigeben über


BitArray.CopyTo(Array, Int32) Methode

Definition

Kopiert die gesamte BitArray-Instanz in ein kompatibles eindimensionales Array, beginnend am angegebenen Index des Zielarrays.

public:
 virtual void CopyTo(Array ^ array, int index);
public void CopyTo (Array array, int index);
abstract member CopyTo : Array * int -> unit
override this.CopyTo : Array * int -> unit
Public Sub CopyTo (array As Array, index As Integer)

Parameter

array
Array

Das eindimensionale Array, das das Ziel der aus der BitArray kopierten Elemente ist. Für das Array muss eine nullbasierte Indizierung verwendet werden.

index
Int32

Der nullbasierte Index im array, bei dem der Kopiervorgang beginnt.

Implementiert

Ausnahmen

array ist null.

index ist kleiner als Null.

array ist mehrdimensional.

- oder -

Die Anzahl der Elemente in der Quell-BitArray ist größer als der verfügbare Platz vom index bis zum Ende des Ziel-arrays.

Der Typ der Quell-BitArray kann nicht automatisch in den Typ des Ziel-array umgewandelt werden.

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie sie in BitArray ein eindimensionales Arraykopieren.

using namespace System;
using namespace System::Collections;
void PrintValues( IEnumerable^ myArr );
int main()
{
   // Creates and initializes the source BitArray.
   BitArray^ myBA = gcnew BitArray( 4 );
   myBA[ 0 ] = true;
   myBA[ 1 ] = true;
   myBA[ 2 ] = true;
   myBA[ 3 ] = true;

   // Creates and initializes the one-dimensional target Array of type Boolean.
   array<Boolean>^myBoolArray = gcnew array<Boolean>(8);
   myBoolArray[ 0 ] = false;
   myBoolArray[ 1 ] = false;

   // Displays the values of the target Array.
   Console::WriteLine( "The target Boolean Array contains the following (before and after copying):" );
   PrintValues( dynamic_cast<IEnumerable^>(myBoolArray) );

   // Copies the entire source BitArray to the target BitArray, starting at index 3.
   myBA->CopyTo( myBoolArray, 3 );

   // Displays the values of the target Array.
   PrintValues( dynamic_cast<IEnumerable^>(myBoolArray) );

   // Creates and initializes the one-dimensional target Array of type integer.
   array<Int32>^myIntArray = gcnew array<Int32>(8);
   myIntArray[ 0 ] = 42;
   myIntArray[ 1 ] = 43;

   // Displays the values of the target Array.
   Console::WriteLine( "The target integer Array contains the following (before and after copying):" );
   PrintValues( dynamic_cast<IEnumerable^>(myIntArray) );

   // Copies the entire source BitArray to the target BitArray, starting at index 3.
   myBA->CopyTo( myIntArray, 3 );

   // Displays the values of the target Array.
   PrintValues( dynamic_cast<IEnumerable^>(myIntArray) );

   // Creates and initializes the one-dimensional target Array of type byte.
   Array^ myByteArray = Array::CreateInstance( Byte::typeid, 8 );
   myByteArray->SetValue( (Byte)10, 0 );
   myByteArray->SetValue( (Byte)11, 1 );

   // Displays the values of the target Array.
   Console::WriteLine( "The target byte Array contains the following (before and after copying):" );
   PrintValues( myByteArray );

   // Copies the entire source BitArray to the target BitArray, starting at index 3.
   myBA->CopyTo( myByteArray, 3 );

   // Displays the values of the target Array.
   PrintValues( myByteArray );

   // Returns an exception if the array is not of type Boolean, integer or byte.
   try
   {
      Array^ myStringArray = Array::CreateInstance( String::typeid, 8 );
      myStringArray->SetValue( "Hello", 0 );
      myStringArray->SetValue( "World", 1 );
      myBA->CopyTo( myStringArray, 3 );
   }
   catch ( Exception^ myException ) 
   {
      Console::WriteLine( "Exception: {0}", myException );
   }

}

void PrintValues( IEnumerable^ myArr )
{
   IEnumerator^ myEnum = myArr->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Object^ obj = safe_cast<Object^>(myEnum->Current);
      Console::Write( "{0,8}", obj );
   }

   Console::WriteLine();
}

/* 
 This code produces the following output.
 
 The target Boolean Array contains the following (before and after copying):
    False   False   False   False   False   False   False   False
    False   False   False    True    True    True    True   False
 The target integer Array contains the following (before and after copying):
       42      43       0       0       0       0       0       0
       42      43       0      15       0       0       0       0
 The target byte Array contains the following (before and after copying):
       10      11       0       0       0       0       0       0
       10      11       0      15       0       0       0       0
 Exception: System.ArgumentException: Only supported array types for CopyTo on BitArrays are Boolean[], Int32[] and Byte[].
    at System.Collections.BitArray.CopyTo(Array array, Int32 index)
    at SamplesBitArray.Main()

 */
using System;
using System.Collections;
public class SamplesBitArray  {

   public static void Main()  {

      // Creates and initializes the source BitArray.
      BitArray myBA = new BitArray( 4 );
      myBA[0] = myBA[1] = myBA[2] = myBA[3] = true;

      // Creates and initializes the one-dimensional target Array of type Boolean.
      bool[] myBoolArray = new bool[8];
      myBoolArray[0] = false;
      myBoolArray[1] = false;

      // Displays the values of the target Array.
      Console.WriteLine( "The target Boolean Array contains the following (before and after copying):" );
      PrintValues( myBoolArray );

      // Copies the entire source BitArray to the target BitArray, starting at index 3.
      myBA.CopyTo( myBoolArray, 3 );

      // Displays the values of the target Array.
      PrintValues( myBoolArray );

      // Creates and initializes the one-dimensional target Array of type integer.
      int[] myIntArray = new int[8];
      myIntArray[0] = 42;
      myIntArray[1] = 43;

      // Displays the values of the target Array.
      Console.WriteLine( "The target integer Array contains the following (before and after copying):" );
      PrintValues( myIntArray );

      // Copies the entire source BitArray to the target BitArray, starting at index 3.
      myBA.CopyTo( myIntArray, 3 );

      // Displays the values of the target Array.
      PrintValues( myIntArray );

      // Creates and initializes the one-dimensional target Array of type byte.
      Array myByteArray = Array.CreateInstance( typeof(byte), 8 );
      myByteArray.SetValue( (byte) 10, 0 );
      myByteArray.SetValue( (byte) 11, 1 );

      // Displays the values of the target Array.
      Console.WriteLine( "The target byte Array contains the following (before and after copying):" );
      PrintValues( myByteArray );

      // Copies the entire source BitArray to the target BitArray, starting at index 3.
      myBA.CopyTo( myByteArray, 3 );

      // Displays the values of the target Array.
      PrintValues( myByteArray );

      // Returns an exception if the array is not of type Boolean, integer or byte.
      try  {
         Array myStringArray=Array.CreateInstance( typeof(string), 8 );
         myStringArray.SetValue( "Hello", 0 );
         myStringArray.SetValue( "World", 1 );
         myBA.CopyTo( myStringArray, 3 );
      } catch ( Exception myException )  {
         Console.WriteLine("Exception: " + myException.ToString());
      }
   }

   public static void PrintValues( IEnumerable myArr )  {
      foreach ( Object obj in myArr ) {
         Console.Write( "{0,8}", obj );
      }
      Console.WriteLine();
   }
}


/*
This code produces the following output.

The target Boolean Array contains the following (before and after copying):
   False   False   False   False   False   False   False   False
   False   False   False    True    True    True    True   False
The target integer Array contains the following (before and after copying):
      42      43       0       0       0       0       0       0
      42      43       0      15       0       0       0       0
The target byte Array contains the following (before and after copying):
      10      11       0       0       0       0       0       0
      10      11       0      15       0       0       0       0
Exception: System.ArgumentException: Only supported array types for CopyTo on BitArrays are Boolean[], Int32[] and Byte[].
   at System.Collections.BitArray.CopyTo(Array array, int index)
   at SamplesBitArray.Main()

*/
Imports System.Collections

Public Class SamplesBitArray

    Public Shared Sub Main()

        ' Creates and initializes the source BitArray.
        Dim myBA As New BitArray(4)
        myBA(0) = True
        myBA(1) = True
        myBA(2) = True
        myBA(3) = True

        ' Creates and initializes the one-dimensional target Array of type Boolean.
        Dim myBoolArray(7) As Boolean
        myBoolArray(0) = False
        myBoolArray(1) = False

        ' Displays the values of the target Array.
        Console.WriteLine("The target Boolean Array contains the following (before and after copying):")
        PrintValues(myBoolArray)

        ' Copies the entire source BitArray to the target BitArray, starting at index 3.
        myBA.CopyTo(myBoolArray, 3)

        ' Displays the values of the target Array.
        PrintValues(myBoolArray)

        ' Creates and initializes the one-dimensional target Array of type integer.
        Dim myIntArray(7) As Integer
        myIntArray(0) = 42
        myIntArray(1) = 43

        ' Displays the values of the target Array.
        Console.WriteLine("The target integer Array contains the following (before and after copying):")
        PrintValues(myIntArray)

        ' Copies the entire source BitArray to the target BitArray, starting at index 3.
        myBA.CopyTo(myIntArray, 3)

        ' Displays the values of the target Array.
        PrintValues(myIntArray)

        ' Creates and initializes the one-dimensional target Array of type byte.
        Dim myByteArray As Array = Array.CreateInstance(GetType(Byte), 8)
        myByteArray.SetValue(System.Convert.ToByte(10), 0)
        myByteArray.SetValue(System.Convert.ToByte(11), 1)

        ' Displays the values of the target Array.
        Console.WriteLine("The target byte Array contains the following (before and after copying):")
        PrintValues(myByteArray)

        ' Copies the entire source BitArray to the target BitArray, starting at index 3.
        myBA.CopyTo(myByteArray, 3)

        ' Displays the values of the target Array.
        PrintValues(myByteArray)

        ' Returns an exception if the array is not of type Boolean, integer or byte.
        Try
            Dim myStringArray As Array = Array.CreateInstance(GetType(String), 8)
            myStringArray.SetValue("Hello", 0)
            myStringArray.SetValue("World", 1)
            myBA.CopyTo(myStringArray, 3)
        Catch myException As Exception
            Console.WriteLine("Exception: " + myException.ToString())
        End Try

    End Sub

    Public Shared Sub PrintValues(myArr As IEnumerable)
        Dim obj As [Object]
        For Each obj In  myArr
            Console.Write("{0,8}", obj)
        Next obj
        Console.WriteLine()
    End Sub

End Class


' This code produces the following output.
' 
' The target Boolean Array contains the following (before and after copying):
'    False   False   False   False   False   False   False   False
'    False   False   False    True    True    True    True   False
' The target integer Array contains the following (before and after copying):
'       42      43       0       0       0       0       0       0
'       42      43       0      15       0       0       0       0
' The target byte Array contains the following (before and after copying):
'       10      11       0       0       0       0       0       0
'       10      11       0      15       0       0       0       0
' Exception: System.ArgumentException: Only supported array types for CopyTo on BitArrays are Boolean[], Int32[] and Byte[].
'    at System.Collections.BitArray.CopyTo(Array array, Int32 index)
'    at SamplesBitArray.Main()

Hinweise

Das angegebene Array muss einen kompatiblen Typ aufweisen. Es werden nur boolArraytypen , intund byte unterstützt.

Diese Methode verwendet Array.Copy , um die Elemente zu kopieren.

Diese Methode ist ein O(n) Vorgang, wobei n ist Count.

Gilt für:

Weitere Informationen