Ler em inglês

Compartilhar via


Array.CopyTo Método

Definição

Copia todos os elementos da matriz unidimensional atual para a matriz unidimensional especificada.

Sobrecargas

CopyTo(Array, Int32)

Copia todos os elementos da matriz unidimensional atual para a matriz unidimensional especificada começando no índice de matriz de destino especificado. O índice é especificado como um inteiro de 32 bits.

CopyTo(Array, Int64)

Copia todos os elementos da matriz unidimensional atual para a matriz unidimensional especificada começando no índice de matriz de destino especificado. O índice é especificado como um inteiro de 64 bits.

Exemplos

O exemplo de código a seguir mostra como copiar um Array para outro Array.

C#
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
*/

O exemplo de código a seguir mostra como copiar um Array para outro Array com um limite inferior diferente de zero. Observe que toda a origem Array é copiada, incluindo elementos vazios que substituem os elementos existentes no destino Array.

C#
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]:
*/

CopyTo(Array, Int32)

Origem:
Array.cs
Origem:
Array.cs
Origem:
Array.cs

Copia todos os elementos da matriz unidimensional atual para a matriz unidimensional especificada começando no índice de matriz de destino especificado. O índice é especificado como um inteiro de 32 bits.

C#
public void CopyTo (Array array, int index);
C#
public virtual void CopyTo (Array array, int index);

Parâmetros

array
Array

A matriz unidimensional que é o destino dos elementos copiados da matriz atual.

index
Int32

Um inteiro de 32 bits que representa o índice no array no qual a cópia é iniciada.

Implementações

Exceções

array é null.

index é menor que o limite inferior de array.

array é multidimensional.

- ou -

O número de elementos na matriz de origem é maior do que o número de elementos disponível de index até o final do array de destino.

O tipo do Array de origem não pode ser automaticamente convertido para o tipo de array de destino.

A matriz de origem é multidimensional.

Pelo menos um elemento no Array de origem não pode ser convertido no tipo de array de destino.

Comentários

Esse método copia todos os elementos da instância da matriz atual para a array matriz de destino, começando no índice index. A array matriz de destino já deve ter sido dimensionada e deve ter um número suficiente de elementos para acomodar os elementos copiados. Caso contrário, o método gera uma exceção.

Esse método dá suporte à System.Collections.ICollection interface . Se a implementação System.Collections.ICollection não for explicitamente necessária, use Copy para evitar um redirecionamento extra.

Caso esse método lance uma exceção durante a cópia, o estado de array é indefinido.

Este método é uma operação O(n), em que n é Length. Ele executa apenas uma cópia superficial.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

CopyTo(Array, Int64)

Origem:
Array.cs
Origem:
Array.cs
Origem:
Array.cs

Copia todos os elementos da matriz unidimensional atual para a matriz unidimensional especificada começando no índice de matriz de destino especificado. O índice é especificado como um inteiro de 64 bits.

C#
public void CopyTo (Array array, long index);
C#
[System.Runtime.InteropServices.ComVisible(false)]
public virtual void CopyTo (Array array, long index);
C#
[System.Runtime.InteropServices.ComVisible(false)]
public void CopyTo (Array array, long index);

Parâmetros

array
Array

A matriz unidimensional que é o destino dos elementos copiados da matriz atual.

index
Int64

Um inteiro de 64 bits que representa o índice no array em que a cópia é iniciada.

Atributos

Exceções

array é null.

index está fora do intervalo de índices válidos para array.

array é multidimensional.

- ou -

O número de elementos na matriz de origem é maior do que o número de elementos disponível de index até o final do array de destino.

O tipo do Array de origem não pode ser automaticamente convertido para o tipo de array de destino.

A fonte Array é multidimensional.

Pelo menos um elemento no Array de origem não pode ser convertido no tipo de array de destino.

Comentários

Esse método copia todos os elementos da instância da matriz atual para a array matriz de destino, começando no índice index. A array matriz de destino já deve ter sido dimensionada e deve ter um número suficiente de elementos para acomodar os elementos copiados. Caso contrário, o método gera uma exceção.

Esse método dá suporte à System.Collections.ICollection interface . Se a implementação System.Collections.ICollection não for explicitamente necessária, use Copy para evitar um redirecionamento extra.

Caso esse método lance uma exceção durante a cópia, o estado de array é indefinido.

Este método é uma operação O(n), em que n é Length. Ele executa apenas uma cópia superficial.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1