Array.CopyTo 方法  
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将当前一维数组的所有元素复制到指定的一维数组中。
重载
| CopyTo(Array, Int32) | 
						 从指定的目标数组索引处开始,将当前一维数组的所有元素复制到指定的一维数组中。 索引指定为 32 位整数。  | 
        	
| CopyTo(Array, Int64) | 
						 从指定的目标数组索引处开始,将当前一维数组的所有元素复制到指定的一维数组中。 索引指定为 64 位整数。  | 
        	
示例
下面的代码示例演示如何将 复制到 Array 另一个 Array。
using namespace System;
void main()
{
   // Creates and initializes two new Array instances.
   Array^ mySourceArray = Array::CreateInstance(String::typeid, 6);
   mySourceArray->SetValue("three", 0);
   mySourceArray->SetValue("napping", 1);
   mySourceArray->SetValue("cats", 2);
   mySourceArray->SetValue("in", 3);
   mySourceArray->SetValue("the", 4);
   mySourceArray->SetValue("barn", 5);
   Array^ myTargetArray = Array::CreateInstance(String::typeid, 15);
   myTargetArray->SetValue("The", 0);
   myTargetArray->SetValue("quick", 1);
   myTargetArray->SetValue("brown", 2);
   myTargetArray->SetValue("fox", 3);
   myTargetArray->SetValue("jumps", 4);
   myTargetArray->SetValue("over", 5);
   myTargetArray->SetValue("the", 6);
   myTargetArray->SetValue("lazy", 7);
   myTargetArray->SetValue("dog", 8);
   // Displays the values of the Array.
   Console::WriteLine( "The target Array instance contains the following (before and after copying):");
   PrintValues(myTargetArray);
   // Copies the source Array to the target Array, starting at index 6.
   mySourceArray->CopyTo(myTargetArray, 6);
   // Displays the values of the Array.
   PrintValues(myTargetArray);
}
void PrintValues(Array^ myArr)
{
   System::Collections::IEnumerator^ myEnumerator = myArr->GetEnumerator();
   int i = 0;
   int cols = myArr->GetLength(myArr->Rank - 1);
   while (myEnumerator->MoveNext())
   {
      if (i < cols)
      {
         i++;
      }
      else
      {
         Console::WriteLine();
         i = 1;
      }
      Console::Write( " {0}", myEnumerator->Current);
   }
   Console::WriteLine();
}
/*
 This code produces the following output.
 
  The target Array instance contains the following (before and after copying):
  The quick brown fox jumps over the lazy dog      
  The quick brown fox jumps over three napping cats in the barn
 */
let printValues arr sep =
    for i in arr do
        printf $"{sep}{i}"
    printfn ""
// Creates and initializes two new Arrays.
let mySourceArray = 
    [| "three"
       "napping"
       "cats"
       "in"
       "the"
       "barn" |]
let myTargetArray = Array.zeroCreate 15
myTargetArray[0..8] <-
    [| "The"
       "quick"
       "brown"
       "fox"
       "jumps"
       "over"
       "the"
       "lazy"
       "dog" |]
// Displays the values of the Array.
printfn "The target Array contains the following (before and after copying):"
printValues myTargetArray ' '
// Copies the source Array to the target Array, starting at index 6.
mySourceArray.CopyTo(myTargetArray, 6)
// Displays the values of the Array.
printValues myTargetArray ' '
// This code produces the following output.
//     The target Array contains the following (before and after copying):
//      The quick brown fox jumps over the lazy dog
//      The quick brown fox jumps over three napping cats in the barn
using System;
public class SamplesArray
{
   public static void Main()
   {
      // Creates and initializes two new Arrays.
      Array mySourceArray=Array.CreateInstance(typeof(string), 6);
      mySourceArray.SetValue("three", 0);
      mySourceArray.SetValue("napping", 1);
      mySourceArray.SetValue("cats", 2);
      mySourceArray.SetValue("in", 3);
      mySourceArray.SetValue("the", 4);
      mySourceArray.SetValue("barn", 5);
      Array myTargetArray=Array.CreateInstance(typeof(string), 15);
      myTargetArray.SetValue("The", 0);
      myTargetArray.SetValue("quick", 1);
      myTargetArray.SetValue("brown", 2);
      myTargetArray.SetValue("fox", 3);
      myTargetArray.SetValue("jumps", 4);
      myTargetArray.SetValue("over", 5);
      myTargetArray.SetValue("the", 6);
      myTargetArray.SetValue("lazy", 7);
      myTargetArray.SetValue("dog", 8);
      // Displays the values of the Array.
      Console.WriteLine("The target Array contains the following (before and after copying):");
      PrintValues(myTargetArray, ' ');
      // Copies the source Array to the target Array, starting at index 6.
      mySourceArray.CopyTo(myTargetArray, 6);
      // Displays the values of the Array.
      PrintValues(myTargetArray, ' ');
   }
   public static void PrintValues(Array myArr, char mySeparator)
   {
      System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();
      int i = 0;
      int cols = myArr.GetLength(myArr.Rank - 1);
      while (myEnumerator.MoveNext())
      {
         if (i < cols)
         {
            i++;
         }
         else
         {
             Console.WriteLine();
             i = 1;
         }
         Console.Write("{0}{1}", mySeparator, myEnumerator.Current);
      }
      Console.WriteLine();
   }
}
/*
This code produces the following output.
The target Array contains the following (before and after copying):
 The quick brown fox jumps over the lazy dog
 The quick brown fox jumps over three napping cats in the barn
*/
Public Class SamplesArray    
    
    Public Shared Sub Main()
        
        ' Creates and initializes two new Arrays.
        Dim mySourceArray As Array = Array.CreateInstance(GetType(String), 6)
        mySourceArray.SetValue("three", 0)
        mySourceArray.SetValue("napping", 1)
        mySourceArray.SetValue("cats", 2)
        mySourceArray.SetValue("in", 3)
        mySourceArray.SetValue("the", 4)
        mySourceArray.SetValue("barn", 5)
        Dim myTargetArray As Array = Array.CreateInstance(GetType(String), 15)
        myTargetArray.SetValue("The", 0)
        myTargetArray.SetValue("quick", 1)
        myTargetArray.SetValue("brown", 2)
        myTargetArray.SetValue("fox", 3)
        myTargetArray.SetValue("jumps", 4)
        myTargetArray.SetValue("over", 5)
        myTargetArray.SetValue("the", 6)
        myTargetArray.SetValue("lazy", 7)
        myTargetArray.SetValue("dog", 8)
        
        ' Displays the values of the Array.
        Console.WriteLine("The target Array contains the following" _
           & "(before and after copying):")
        PrintValues(myTargetArray, " "c)
        
        ' Copies the source Array to the target Array, starting at index 6.
        mySourceArray.CopyTo(myTargetArray, 6)
        
        ' Displays the values of the Array.
        PrintValues(myTargetArray, " "c)
    End Sub    
    
    Public Shared Sub PrintValues(myArr As Array, mySeparator As Char)
        Dim myEnumerator As System.Collections.IEnumerator = _
           myArr.GetEnumerator()
        Dim i As Integer = 0
        Dim cols As Integer = myArr.GetLength((myArr.Rank - 1))
        While myEnumerator.MoveNext()
            If i < cols Then
                i += 1
            Else
                Console.WriteLine()
                i = 1
            End If
            Console.Write("{0}{1}", mySeparator, myEnumerator.Current)
        End While
        Console.WriteLine()
    End Sub
End Class
' This code produces the following output.
' 
' The target Array contains the following (before and after copying):
'  The quick brown fox jumps over the lazy dog      
'  The quick brown fox jumps over three napping cats in the barn
下面的代码示例演示如何将 复制到 Array 具有非零下限的另一 Array 个。 请注意,将复制整个源 Array ,包括覆盖目标 Array中的现有元素的空元素。
using namespace System;
void main()
{
   // Creates and initializes the source Array.
   Array^ myArrayZero = Array::CreateInstance(String::typeid, 3);
   myArrayZero->SetValue("zero", 0);
   myArrayZero->SetValue("one", 1);
   // Displays the source Array.
   Console::WriteLine("The array with lowbound=0 contains:");
   PrintIndexAndValues(myArrayZero);
   // Creates and initializes the target Array.
   array<int>^myArrLen = {4};
   array<int>^myArrLow = {2};
   Array^ myArrayTwo = Array::CreateInstance(String::typeid, myArrLen, myArrLow);
   myArrayTwo->SetValue("two", 2);
   myArrayTwo->SetValue("three", 3);
   myArrayTwo->SetValue("four", 4);
   myArrayTwo->SetValue("five", 5);
   // Displays the target Array.
   Console::WriteLine("The array with lowbound=2 contains:");
   PrintIndexAndValues(myArrayTwo);
   // Copy from the array with lowbound=0 to the array with lowbound=2.
   myArrayZero->CopyTo(myArrayTwo, 3);
   // Displays the modified target Array.
   Console::WriteLine("\nAfter copying at relative index 1:");
   PrintIndexAndValues(myArrayTwo);
}
void PrintIndexAndValues(Array^ myArray)
{
   for (int i = myArray->GetLowerBound(0); i <= myArray->GetUpperBound(0); i++)
      Console::WriteLine("\t[{0}]:\t{1}", i, myArray->GetValue(i));
}
/* 
 This code produces the following output.
 
 The array with lowbound=0 contains:
     [0]:    zero
     [1]:    one
     [2]:    
 The array with lowbound=2 contains:
     [2]:    two
     [3]:    three
     [4]:    four
     [5]:    five
 
 After copying at relative index 1:
     [2]:    two
     [3]:    zero
     [4]:    one
     [5]:
 */
open System
let printIndexAndValues (myArray: Array) =
    for i = myArray.GetLowerBound 0 to myArray.GetUpperBound 0 do
        printfn $"\t[{i}]:\t{myArray.GetValue i}"
// Creates and initializes the source Array.
let myArrayZero = Array.zeroCreate 3
myArrayZero[0] <- "zero"
myArrayZero[1] <- "one"
// Displays the source Array.
printfn "The array with lower bound=0 contains:"
printIndexAndValues myArrayZero
// Creates and initializes the target Array.
let myArrLen = [| 4 |]
let myArrLow = [| 2 |]
let myArrayTwo = Array.CreateInstance(typeof<string>, myArrLen, myArrLow)
myArrayTwo.SetValue("two", 2)
myArrayTwo.SetValue("three", 3)
myArrayTwo.SetValue("four", 4)
myArrayTwo.SetValue("five", 5)
// Displays the target Array.
printfn "The array with lower bound=2 contains:"
printIndexAndValues myArrayTwo
// Copies from the array with lower bound=0 to the array with lower bound=2.
myArrayZero.CopyTo(myArrayTwo, 3)
// Displays the modified target Array.
printfn "\nAfter copying to the target array from index 3:"
printIndexAndValues myArrayTwo
// This code produces the following output.
//     The array with lower bound=0 contains:
//         [0]:    zero
//         [1]:    one
//         [2]:
//     The array with lower bound=2 contains:
//         [2]:    two
//         [3]:    three
//         [4]:    four
//         [5]:    five
//     
//     After copying to the target array from index 3:
//         [2]:    two
//         [3]:    zero
//         [4]:    one
//         [5]:
using System;
public class SamplesArray2
{
   public static void Main()
   {
      // Creates and initializes the source Array.
      Array myArrayZero=Array.CreateInstance(typeof(string), 3);
      myArrayZero.SetValue("zero", 0);
      myArrayZero.SetValue("one", 1);
      // Displays the source Array.
      Console.WriteLine("The array with lower bound=0 contains:");
      PrintIndexAndValues(myArrayZero);
      // Creates and initializes the target Array.
      int[] myArrLen = { 4 };
      int[] myArrLow = { 2 };
      Array myArrayTwo=Array.CreateInstance(typeof(string), myArrLen, myArrLow);
      myArrayTwo.SetValue("two", 2);
      myArrayTwo.SetValue("three", 3);
      myArrayTwo.SetValue("four", 4);
      myArrayTwo.SetValue("five", 5);
      // Displays the target Array.
      Console.WriteLine("The array with lower bound=2 contains:");
      PrintIndexAndValues(myArrayTwo);
      // Copies from the array with lower bound=0 to the array with lower bound=2.
      myArrayZero.CopyTo(myArrayTwo, 3);
      // Displays the modified target Array.
      Console.WriteLine("\nAfter copying to the target array from index 3:");
      PrintIndexAndValues(myArrayTwo);
   }
   public static void PrintIndexAndValues(Array myArray)
   {
      for (int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++)
         Console.WriteLine("\t[{0}]:\t{1}", i, myArray.GetValue(i));
   }
}
/*
This code produces the following output.
The array with lower bound=0 contains:
    [0]:    zero
    [1]:    one
    [2]:
The array with lower bound=2 contains:
    [2]:    two
    [3]:    three
    [4]:    four
    [5]:    five
After copying to the target array from index 3:
    [2]:    two
    [3]:    zero
    [4]:    one
    [5]:
*/
Public Class SamplesArray2    
    
    Public Shared Sub Main()
        ' Creates and initializes the source Array.
        Dim myArrayZero As Array = Array.CreateInstance(GetType(String), 3)
        myArrayZero.SetValue("zero", 0)
        myArrayZero.SetValue("one", 1)
        
        ' Displays the source Array.
        Console.WriteLine("The array with lower bound=0 contains:")
        PrintIndexAndValues(myArrayZero)
        
        ' Creates and initializes the target Array.
        Dim myArrLen As Integer() = {4}
        Dim myArrLow As Integer() = {2}
        Dim myArrayTwo As Array = Array.CreateInstance(GetType(String), _
           myArrLen, myArrLow)
        myArrayTwo.SetValue("two", 2)
        myArrayTwo.SetValue("three", 3)
        myArrayTwo.SetValue("four", 4)
        myArrayTwo.SetValue("five", 5)
        
        ' Displays the target Array.
        Console.WriteLine("The array with lower bound=2 contains:")
        PrintIndexAndValues(myArrayTwo)
        
        ' Copies from the array with lower bound=0 to the array with lower bound=2.
        myArrayZero.CopyTo(myArrayTwo, 3)
        
        ' Displays the modified target Array.
        Console.WriteLine(ControlChars.Cr + "After copying to the target array from " _
           + "index 3:")
        PrintIndexAndValues(myArrayTwo)
    End Sub
    
    Public Shared Sub PrintIndexAndValues(myArray As Array)
        Dim i As Integer
        For i = myArray.GetLowerBound(0) To myArray.GetUpperBound(0)
            Console.WriteLine(ControlChars.Tab + "[{0}]:" + ControlChars.Tab _
               + "{1}", i, myArray.GetValue(i))
        Next i
    End Sub
End Class
' This code produces the following output.
' 
' The array with lower bound=0 contains:
'     [0]:    zero
'     [1]:    one
'     [2]:    
' The array with lower bound=2 contains:
'     [2]:    two
'     [3]:    three
'     [4]:    four
'     [5]:    five
' 
' After copying to the target array from index 3:
'     [2]:    two
'     [3]:    zero
'     [4]:    one
'     [5]:
CopyTo(Array, Int32)
- Source:
 - Array.cs
 
- Source:
 - Array.cs
 
- Source:
 - Array.cs
 
从指定的目标数组索引处开始,将当前一维数组的所有元素复制到指定的一维数组中。 索引指定为 32 位整数。
public:
 virtual void CopyTo(Array ^ array, int index);
	public void CopyTo (Array array, int index);
	public virtual 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)
	Public Overridable Sub CopyTo (array As Array, index As Integer)
	参数
- array
 - Array
 
一维数组,它是从当前数组复制的元素的目标。
- index
 - Int32
 
一个 32 位整数,它表示 array 中复制开始处的索引。
实现
例外
              array 为 null。
              index 小于 array 的下限。
无法自动将源 Array 的类型转换为目标 array 的类型。
源数组是多维数组。
源 Array 中至少有一个元素无法转换为目标 array 的类型。
注解
此方法将当前数组实例 array 的所有元素复制到目标数组,从索引 index开始。 目标 array 数组必须已设置维度,并且必须具有足够数量的元素来容纳复制的元素。 否则,该方法将引发异常。
此方法支持 System.Collections.ICollection 接口。 如果不显式要求实现 System.Collections.ICollection ,请使用 Copy 以避免额外的间接。
如果此方法在复制时引发异常,则 状态 array 为未定义。
此方法是 O (n) 操作,其中 n 为 Length。 它仅执行浅表复制。
另请参阅
适用于
CopyTo(Array, Int64)
- Source:
 - Array.cs
 
- Source:
 - Array.cs
 
- Source:
 - Array.cs
 
从指定的目标数组索引处开始,将当前一维数组的所有元素复制到指定的一维数组中。 索引指定为 64 位整数。
public:
 void CopyTo(Array ^ array, long index);
	public:
 virtual void CopyTo(Array ^ array, long index);
	public void CopyTo (Array array, long index);
	[System.Runtime.InteropServices.ComVisible(false)]
public virtual void CopyTo (Array array, long index);
	[System.Runtime.InteropServices.ComVisible(false)]
public void CopyTo (Array array, long index);
	member this.CopyTo : Array * int64 -> unit
	[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member CopyTo : Array * int64 -> unit
override this.CopyTo : Array * int64 -> unit
	[<System.Runtime.InteropServices.ComVisible(false)>]
member this.CopyTo : Array * int64 -> unit
	Public Sub CopyTo (array As Array, index As Long)
	Public Overridable Sub CopyTo (array As Array, index As Long)
	参数
- array
 - Array
 
一维数组,它是从当前数组复制的元素的目标。
- index
 - Int64
 
一个 64 位整数,它表示 array 中复制开始处的索引。
- 属性
 
例外
              array 为 null。
              index 超出了 array 的有效索引范围。
无法自动将源 Array 的类型转换为目标 array 的类型。
源 Array 是多维的。
源 Array 中至少有一个元素无法转换为目标 array 的类型。
注解
此方法将当前数组实例 array 的所有元素复制到目标数组,从索引 index开始。 目标 array 数组必须已设置维度,并且必须具有足够数量的元素来容纳复制的元素。 否则,该方法将引发异常。
此方法支持 System.Collections.ICollection 接口。 如果不显式要求实现 System.Collections.ICollection ,请使用 Copy 以避免额外的间接。
如果此方法在复制时引发异常,则 状态 array 为未定义。
此方法是 O (n) 操作,其中 n 为 Length。 它仅执行浅表复制。