BitArray.CopyTo(Array, Int32) 方法   
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
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 -> unitPublic Sub CopyTo (array As Array, index As Integer)参数
- index
- Int32
              array 中从零开始的索引,从此处开始复制。
实现
例外
              array 为 null。
              index 小于零。
无法自动将源 BitArray 的类型转换为目标 array 的类型。
示例
下面的代码示例演示如何将 复制到 BitArray 一维 Array中。
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()
注解
指定的数组必须属于兼容类型。 仅 bool支持 、 int和 byte 类型的数组。
此方法使用 Array.Copy 复制元素。
此方法是一个 O(n) 操作,其中 n 是 Count。