Array.Copy Array.Copy Array.Copy Array.Copy Method

Definição

Copia um intervalo de elementos em um Array para outro Array e executa a conversão de tipo de conversão e a conversão boxing conforme necessário.Copies a range of elements in one Array to another Array and performs type casting and boxing as required.

Sobrecargas

Copy(Array, Int64, Array, Int64, Int64) Copy(Array, Int64, Array, Int64, Int64) Copy(Array, Int64, Array, Int64, Int64) Copy(Array, Int64, Array, Int64, Int64)

Copia um intervalo de elementos de um Array a partir do índice de origem especificado e cola-os em outro Array a partir do índice de destino especificado.Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. O tamanho e os índices são especificados como inteiros de 64 bits.The length and the indexes are specified as 64-bit integers.

Copy(Array, Int32, Array, Int32, Int32) Copy(Array, Int32, Array, Int32, Int32) Copy(Array, Int32, Array, Int32, Int32) Copy(Array, Int32, Array, Int32, Int32)

Copia um intervalo de elementos de um Array a partir do índice de origem especificado e cola-os em outro Array a partir do índice de destino especificado.Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. A altura e os índices são especificados como inteiros de 32 bits.The length and the indexes are specified as 32-bit integers.

Copy(Array, Array, Int64) Copy(Array, Array, Int64) Copy(Array, Array, Int64) Copy(Array, Array, Int64)

Copia um intervalo de elementos de uma Array iniciando no primeiro elemento e cola-o em outro Array, iniciando no primeiro elemento.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. O tamanho é especificado como um inteiro de 64 bits.The length is specified as a 64-bit integer.

Copy(Array, Array, Int32) Copy(Array, Array, Int32) Copy(Array, Array, Int32) Copy(Array, Array, Int32)

Copia um intervalo de elementos de uma Array iniciando no primeiro elemento e cola-o em outro Array, iniciando no primeiro elemento.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. O comprimento é especificado como um inteiro de 32 bits.The length is specified as a 32-bit integer.

Copy(Array, Int64, Array, Int64, Int64) Copy(Array, Int64, Array, Int64, Int64) Copy(Array, Int64, Array, Int64, Int64) Copy(Array, Int64, Array, Int64, Int64)

Copia um intervalo de elementos de um Array a partir do índice de origem especificado e cola-os em outro Array a partir do índice de destino especificado.Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. O tamanho e os índices são especificados como inteiros de 64 bits.The length and the indexes are specified as 64-bit integers.

public:
 static void Copy(Array ^ sourceArray, long sourceIndex, Array ^ destinationArray, long destinationIndex, long length);
public static void Copy (Array sourceArray, long sourceIndex, Array destinationArray, long destinationIndex, long length);
static member Copy : Array * int64 * Array * int64 * int64 -> unit
Public Shared Sub Copy (sourceArray As Array, sourceIndex As Long, destinationArray As Array, destinationIndex As Long, length As Long)

Parâmetros

sourceArray
Array Array Array Array

O Array que contém os dados a serem copiados.The Array that contains the data to copy.

sourceIndex
Int64 Int64 Int64 Int64

Um inteiro de 64 bits que representa o índice no sourceArray no qual a cópia é iniciada.A 64-bit integer that represents the index in the sourceArray at which copying begins.

destinationArray
Array Array Array Array

O Array que recebe os dados.The Array that receives the data.

destinationIndex
Int64 Int64 Int64 Int64

Um inteiro de 64 bits que representa o índice no destinationArray no qual o armazenamento é iniciado.A 64-bit integer that represents the index in the destinationArray at which storing begins.

length
Int64 Int64 Int64 Int64

Um inteiro de 64 bits que representa o número de elementos a se copiar.A 64-bit integer that represents the number of elements to copy. O inteiro deve estar entre zero e MaxValue, inclusive.The integer must be between zero and MaxValue, inclusive.

Exceções

sourceArray é null.sourceArray is null.

- ou --or- destinationArray é null.destinationArray is null.

sourceArray e destinationArray têm classificações diferentes.sourceArray and destinationArray have different ranks.

sourceArray e destinationArray são de tipos incompatíveis.sourceArray and destinationArray are of incompatible types.

Pelo menos um elemento em sourceArray não pode ser convertido no tipo de destinationArray.At least one element in sourceArray cannot be cast to the type of destinationArray.

sourceIndex está fora do intervalo de índices válidos para o sourceArray.sourceIndex is outside the range of valid indexes for the sourceArray.

- ou --or- destinationIndex está fora do intervalo de índices válidos para o destinationArray.destinationIndex is outside the range of valid indexes for the destinationArray.

- ou --or- length é menor que 0 ou maior que MaxValue.length is less than 0 or greater than MaxValue.

length é maior que o número de elementos do sourceIndex até o final do sourceArray.length is greater than the number of elements from sourceIndex to the end of sourceArray.

- ou --or- length é maior que o número de elementos do destinationIndex até o final do destinationArray.length is greater than the number of elements from destinationIndex to the end of destinationArray.

Exemplos

O exemplo de código a seguir mostra como copiar de Array um do Object tipo para Array outro do tipo inteiro.The following code example shows how to copy from one Array of type Object to another Array of type integer.

using namespace System;
void PrintValues( Array^ myArr );
void main()
{
   
   // Creates and initializes a new Array instance of type Int32.
   Array^ myIntArray = Array::CreateInstance( Type::GetType(  "System.Int32" ), 5 );
   for ( int i = myIntArray->GetLowerBound( 0 ); i <= myIntArray->GetUpperBound( 0 ); i++ )
      myIntArray->SetValue( i + 1, i );
   
   // Creates and initializes a new Array instance of type Object.
   Array^ myObjArray = Array::CreateInstance( Type::GetType(  "System.Object" ), 5 );
   for ( int i = myObjArray->GetLowerBound( 0 ); i <= myObjArray->GetUpperBound( 0 ); i++ )
      myObjArray->SetValue( i + 26, i );
   
   // Displays the initial values of both arrays.
   Console::WriteLine(  "Int32 array:" );
   PrintValues( myIntArray );
   Console::WriteLine(  "Object array:" );
   PrintValues( myObjArray );
   
   // Copies the first element from the Int32 array to the Object array.
   Array::Copy( myIntArray, myIntArray->GetLowerBound( 0 ), myObjArray, myObjArray->GetLowerBound( 0 ), 1 );
   
   // Copies the last two elements from the Object array to the Int32 array.
   Array::Copy( myObjArray, myObjArray->GetUpperBound( 0 ) - 1, myIntArray, myIntArray->GetUpperBound( 0 ) - 1, 2 );
   
   // Displays the values of the modified arrays.
   Console::WriteLine(  "Int32 array - Last two elements should now be the same as Object array:" );
   PrintValues( myIntArray );
   Console::WriteLine(  "Object array - First element should now be the same as Int32 array:" );
   PrintValues( myObjArray );
}

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(  "\t{0}", myEnumerator->Current );
   }

   Console::WriteLine();
}

/*
 This code produces the following output.
 
 Int32 array:
     1    2    3    4    5
 Object array:
     26    27    28    29    30
 Int32 array - Last two elements should now be the same as Object array:
     1    2    3    29    30
 Object array - First element should now be the same as Int32 array:
     1    27    28    29    30
 */
using System;
public class SamplesArray  {

   public static void Main()  {

      // Creates and initializes a new Array of type Int32.
      Array myIntArray=Array.CreateInstance( typeof(System.Int32), 5 );
      for ( int i = myIntArray.GetLowerBound(0); i <= myIntArray.GetUpperBound(0); i++ )
         myIntArray.SetValue( i+1, i );

      // Creates and initializes a new Array of type Object.
      Array myObjArray = Array.CreateInstance( typeof(System.Object), 5 );
      for ( int i = myObjArray.GetLowerBound(0); i <= myObjArray.GetUpperBound(0); i++ )
         myObjArray.SetValue( i+26, i );

      // Displays the initial values of both arrays.
      Console.WriteLine( "Int32 array:" );
      PrintValues( myIntArray );
      Console.WriteLine( "Object array:" );
      PrintValues( myObjArray );

      // Copies the first element from the Int32 array to the Object array.
      Array.Copy( myIntArray, myIntArray.GetLowerBound(0), myObjArray, myObjArray.GetLowerBound(0), 1 );

      // Copies the last two elements from the Object array to the Int32 array.
      Array.Copy( myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, myIntArray.GetUpperBound(0) - 1, 2 );

      // Displays the values of the modified arrays.
      Console.WriteLine( "Int32 array - Last two elements should now be the same as Object array:" );
      PrintValues( myIntArray );
      Console.WriteLine( "Object array - First element should now be the same as Int32 array:" );
      PrintValues( myObjArray );
   }


   public static 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( "\t{0}", myEnumerator.Current );
      }
      Console.WriteLine();
   }
}
/*
This code produces the following output.

Int32 array:
    1    2    3    4    5
Object array:
    26    27    28    29    30
Int32 array - Last two elements should now be the same as Object array:
    1    2    3    29    30
Object array - First element should now be the same as Int32 array:
    1    27    28    29    30
*/
Public Class SamplesArray    
    
    Public Shared Sub Main()
        
        ' Creates and initializes a new Array of type Int32.
        Dim myIntArray As Array = _
           Array.CreateInstance(GetType(System.Int32), 5)
        Dim i As Integer
        For i = myIntArray.GetLowerBound(0) To myIntArray.GetUpperBound(0)
            myIntArray.SetValue(i + 1, i)
        Next i 
        ' Creates and initializes a new Array of type Object.
        Dim myObjArray As Array = _
           Array.CreateInstance(GetType(System.Object), 5)
        For i = myObjArray.GetLowerBound(0) To myObjArray.GetUpperBound(0)
            myObjArray.SetValue(i + 26, i)
        Next i 
        ' Displays the initial values of both arrays.
        Console.WriteLine("Int32 array:")
        PrintValues(myIntArray)
        Console.WriteLine("Object array:")
        PrintValues(myObjArray)
        
        ' Copies the first element from the Int32 array to the Object array.
        Array.Copy(myIntArray, myIntArray.GetLowerBound(0), myObjArray, _
           myObjArray.GetLowerBound(0), 1)
        
        ' Copies the last two elements from the Object array to the Int32 array.
        Array.Copy(myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, _
           myIntArray.GetUpperBound(0) - 1, 2)
        
        ' Displays the values of the modified arrays.
        Console.WriteLine("Int32 array - Last two elements should now be " _
           + "the same as Object array:")
        PrintValues(myIntArray)
        Console.WriteLine("Object array - First element should now be the " _
           + "same as Int32 array:")
        PrintValues(myObjArray)
    End Sub
    
    Public Shared Sub PrintValues(myArr As Array)
        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(ControlChars.Tab + "{0}", myEnumerator.Current)
        End While
        Console.WriteLine()
    End Sub
End Class

' This code produces the following output.
' 
' Int32 array:
'     1    2    3    4    5
' Object array:
'     26    27    28    29    30
' Int32 array - Last two elements should now be the same as Object array:
'     1    2    3    29    30
' Object array - First element should now be the same as Int32 array:
'     1    27    28    29    30

Comentários

Os parâmetros sourceArray e destinationArray devem ter o mesmo número de dimensões.The sourceArray and destinationArray parameters must have the same number of dimensions. Além disso, destinationArray já deve ter sido dimensionável e deve ter um número suficiente de elementos a destinationIndex partir da posição para acomodar os dados copiados.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements starting from the destinationIndex position to accommodate the copied data.

Ao copiar entre matrizes multidimensionais, a matriz se comporta como uma matriz unidimensional longa, em que as linhas (ou colunas) são direcionadas conceitualmente de ponta a ponta.When copying between multidimensional arrays, the array behaves like a long one-dimensional array, where the rows (or columns) are conceptually laid end-to-end. Por exemplo, se uma matriz tivesse três linhas (ou colunas) com quatro elementos cada, a cópia de seis elementos do início da matriz copiaria todos os quatro elementos da primeira linha (ou coluna) e os dois primeiros elementos da segunda linha (ou coluna).For example, if an array has three rows (or columns) with four elements each, copying six elements from the beginning of the array would copy all four elements of the first row (or column) and the first two elements of the second row (or column). Para iniciar a cópia do segundo elemento da terceira linha (ou coluna), sourceIndex deve ser o limite superior da primeira linha (ou coluna) mais o comprimento da segunda linha (ou coluna) mais duas.To start copying from the second element of the third row (or column), sourceIndex must be the upper bound of the first row (or column) plus the length of the second row (or column) plus two.

Caso sourceArray e destinationArray se sobreponham, este método se comporta como se os valores originais de sourceArray foram preservados em um local temporário antes de destinationArray ser substituído.If sourceArray and destinationArray overlap, this method behaves as if the original values of sourceArray were preserved in a temporary location before destinationArray is overwritten.

[C++][C++]

Este método é equivalente à função padrão do C/C++ memmove, e não a memcpy.This method is equivalent to the standard C/C++ function memmove, not memcpy.

As matrizes podem ser matrizes do tipo referência ou matrizes do tipo valor.The arrays can be reference-type arrays or value-type arrays. O downcast de tipo é realizado, conforme necessário.Type downcasting is performed, as required.

  • Durante a cópia de uma matriz do tipo de referência para uma matriz do tipo de valor, cada elemento é convertido e, em seguida, copiado.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Durante a cópia de uma matriz do tipo de valor para uma matriz do tipo de referência, cada elemento é convertido e, em seguida, copiado.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Durante a cópia de uma matriz do tipo de referência ou do tipo de valor para um Object, um Object é criado para manter cada valor ou referência e, em seguida, copiá-lo.When copying from a reference-type or value-type array to an Object array, an Object is created to hold each value or reference and then copied. Durante a cópia de uma matriz Object para uma matriz do tipo de referência ou matriz do tipo de valor e a atribuição não é possível, InvalidCastException é lançado.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • Caso sourceArray e destinationArray sejam matrizes do tipo de referência ou ambas as matrizes do tipo Object, uma cópia superficial é realizada.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Uma cópia superficial de um Array é um novo Array contendo referências aos mesmos elementos do Arrayoriginal.A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Os próprios elementos ou nada referenciado pelos elementos não são copiados.The elements themselves or anything referenced by the elements are not copied. Por outro lado, uma cópia em profundidade de um Array copia os elementos e tudo direta ou indiretamente referenciado pelos elementos.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

Um ArrayTypeMismatchException será lançado se as matrizes forem de tipos incompatíveis.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. A compatibilidade de tipo é definida da seguinte forma:Type compatibility is defined as follows:

  • Um tipo é compatível com ele próprio.A type is compatible with itself.

  • Um tipo de valor é compatível com Object e com um tipo de interface implementado por esse tipo de valor.A value type is compatible with Object and with an interface type implemented by that value type. Um tipo de valor só é considerado conectado a uma interface caso implemente essa interface diretamente.A value type is considered connected to an interface only if it implements that interface directly. Os tipos desconectado não são compatíveis.Disconnected types are not compatible.

  • Dois tipos de valor intrínseco (predefinido) são compatíveis caso a cópia do tipo de fonte para o tipo de destino seja uma conversão de ampliação.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Uma conversão de ampliação jamais perde informações, e uma conversão de redução pode perder informações.A widening conversion never loses information, whereas a narrowing conversion can lose information. Por exemplo, a conversão de um inteiro assinado de 32 bits em um inteiro assinado de 64 bits é uma conversão de ampliação, e a conversão de um inteiro assinado de 64 bits em um inteiro assinado de 32 bits é uma conversão de redução.For example, converting a 32-bit signed integer to a 64-bit signed integer is a widening conversion, and converting a 64-bit signed integer to a 32-bit signed integer is a narrowing conversion. Para obter mais informações sobre conversões, consulte Convert.For more information about conversions, see Convert.

  • Um tipo de valor não intrínseco (definido pelo usuário) só é compatível com ele próprio.A nonintrinsic (user-defined) value type is compatible only with itself.

  • Enumerações têm uma conversão implícita em Enum e no tipo subjacente.Enumerations have an implicit conversion to Enum and to their underlying type.

Caso cada elemento em sourceArray exija um downcast (por exemplo, uma classe base para uma classe derivada ou de uma interface para um objeto) e um ou mais elementos não possam ser convertidos no tipo correspondente em destinationArray, InvalidCastException é lançado.If every element in sourceArray requires a downcast (for example, from a base class to a derived class or from an interface to an object) and one or more elements cannot be cast to the corresponding type in destinationArray, an InvalidCastException is thrown.

Caso esse método lance uma exceção durante a cópia, o estado de destinationArray é indefinido.If this method throws an exception while copying, the state of destinationArray is undefined.

Este método é uma operação O(n), em que n é length.This method is an O(n) operation, where n is length.

Veja também

Copy(Array, Int32, Array, Int32, Int32) Copy(Array, Int32, Array, Int32, Int32) Copy(Array, Int32, Array, Int32, Int32) Copy(Array, Int32, Array, Int32, Int32)

Copia um intervalo de elementos de um Array a partir do índice de origem especificado e cola-os em outro Array a partir do índice de destino especificado.Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. A altura e os índices são especificados como inteiros de 32 bits.The length and the indexes are specified as 32-bit integers.

public:
 static void Copy(Array ^ sourceArray, int sourceIndex, Array ^ destinationArray, int destinationIndex, int length);
public static void Copy (Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);
static member Copy : Array * int * Array * int * int -> unit
Public Shared Sub Copy (sourceArray As Array, sourceIndex As Integer, destinationArray As Array, destinationIndex As Integer, length As Integer)

Parâmetros

sourceArray
Array Array Array Array

O Array que contém os dados a serem copiados.The Array that contains the data to copy.

sourceIndex
Int32 Int32 Int32 Int32

Um inteiro de 32 bits que representa o índice no sourceArray no qual a cópia é iniciada.A 32-bit integer that represents the index in the sourceArray at which copying begins.

destinationArray
Array Array Array Array

O Array que recebe os dados.The Array that receives the data.

destinationIndex
Int32 Int32 Int32 Int32

Um inteiro de 32 bits que representa o índice no destinationArray no qual o armazenamento é iniciado.A 32-bit integer that represents the index in the destinationArray at which storing begins.

length
Int32 Int32 Int32 Int32

Um inteiro de 32 bits que representa o número de elementos a se copiar.A 32-bit integer that represents the number of elements to copy.

Exceções

sourceArray é null.sourceArray is null.

- ou --or- destinationArray é null.destinationArray is null.

sourceArray e destinationArray têm classificações diferentes.sourceArray and destinationArray have different ranks.

sourceArray e destinationArray são de tipos incompatíveis.sourceArray and destinationArray are of incompatible types.

Pelo menos um elemento em sourceArray não pode ser convertido no tipo de destinationArray.At least one element in sourceArray cannot be cast to the type of destinationArray.

sourceIndex é menor que o limite inferior da primeira dimensão de sourceArray.sourceIndex is less than the lower bound of the first dimension of sourceArray.

- ou --or- destinationIndex é menor que o limite inferior da primeira dimensão de destinationArray.destinationIndex is less than the lower bound of the first dimension of destinationArray.

- ou --or- length é menor que zero.length is less than zero.

length é maior que o número de elementos do sourceIndex até o final do sourceArray.length is greater than the number of elements from sourceIndex to the end of sourceArray.

- ou --or- length é maior que o número de elementos do destinationIndex até o final do destinationArray.length is greater than the number of elements from destinationIndex to the end of destinationArray.

Exemplos

O exemplo de código a seguir mostra como copiar de Array um do Object tipo para Array outro do tipo inteiro.The following code example shows how to copy from one Array of type Object to another Array of type integer.

using namespace System;
void PrintValues( Array^ myArr );
void main()
{
   
   // Creates and initializes a new Array instance of type Int32.
   Array^ myIntArray = Array::CreateInstance( Type::GetType(  "System.Int32" ), 5 );
   for ( int i = myIntArray->GetLowerBound( 0 ); i <= myIntArray->GetUpperBound( 0 ); i++ )
      myIntArray->SetValue( i + 1, i );
   
   // Creates and initializes a new Array instance of type Object.
   Array^ myObjArray = Array::CreateInstance( Type::GetType(  "System.Object" ), 5 );
   for ( int i = myObjArray->GetLowerBound( 0 ); i <= myObjArray->GetUpperBound( 0 ); i++ )
      myObjArray->SetValue( i + 26, i );
   
   // Displays the initial values of both arrays.
   Console::WriteLine(  "Int32 array:" );
   PrintValues( myIntArray );
   Console::WriteLine(  "Object array:" );
   PrintValues( myObjArray );
   
   // Copies the first element from the Int32 array to the Object array.
   Array::Copy( myIntArray, myIntArray->GetLowerBound( 0 ), myObjArray, myObjArray->GetLowerBound( 0 ), 1 );
   
   // Copies the last two elements from the Object array to the Int32 array.
   Array::Copy( myObjArray, myObjArray->GetUpperBound( 0 ) - 1, myIntArray, myIntArray->GetUpperBound( 0 ) - 1, 2 );
   
   // Displays the values of the modified arrays.
   Console::WriteLine(  "Int32 array - Last two elements should now be the same as Object array:" );
   PrintValues( myIntArray );
   Console::WriteLine(  "Object array - First element should now be the same as Int32 array:" );
   PrintValues( myObjArray );
}

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(  "\t{0}", myEnumerator->Current );
   }

   Console::WriteLine();
}

/*
 This code produces the following output.
 
 Int32 array:
     1    2    3    4    5
 Object array:
     26    27    28    29    30
 Int32 array - Last two elements should now be the same as Object array:
     1    2    3    29    30
 Object array - First element should now be the same as Int32 array:
     1    27    28    29    30
 */
using System;
public class SamplesArray  {

   public static void Main()  {

      // Creates and initializes a new Array of type Int32.
      Array myIntArray=Array.CreateInstance( typeof(System.Int32), 5 );
      for ( int i = myIntArray.GetLowerBound(0); i <= myIntArray.GetUpperBound(0); i++ )
         myIntArray.SetValue( i+1, i );

      // Creates and initializes a new Array of type Object.
      Array myObjArray = Array.CreateInstance( typeof(System.Object), 5 );
      for ( int i = myObjArray.GetLowerBound(0); i <= myObjArray.GetUpperBound(0); i++ )
         myObjArray.SetValue( i+26, i );

      // Displays the initial values of both arrays.
      Console.WriteLine( "Int32 array:" );
      PrintValues( myIntArray );
      Console.WriteLine( "Object array:" );
      PrintValues( myObjArray );

      // Copies the first element from the Int32 array to the Object array.
      Array.Copy( myIntArray, myIntArray.GetLowerBound(0), myObjArray, myObjArray.GetLowerBound(0), 1 );

      // Copies the last two elements from the Object array to the Int32 array.
      Array.Copy( myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, myIntArray.GetUpperBound(0) - 1, 2 );

      // Displays the values of the modified arrays.
      Console.WriteLine( "Int32 array - Last two elements should now be the same as Object array:" );
      PrintValues( myIntArray );
      Console.WriteLine( "Object array - First element should now be the same as Int32 array:" );
      PrintValues( myObjArray );
   }


   public static 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( "\t{0}", myEnumerator.Current );
      }
      Console.WriteLine();
   }
}
/*
This code produces the following output.

Int32 array:
    1    2    3    4    5
Object array:
    26    27    28    29    30
Int32 array - Last two elements should now be the same as Object array:
    1    2    3    29    30
Object array - First element should now be the same as Int32 array:
    1    27    28    29    30
*/
Public Class SamplesArray    
    
    Public Shared Sub Main()
        
        ' Creates and initializes a new Array of type Int32.
        Dim myIntArray As Array = _
           Array.CreateInstance(GetType(System.Int32), 5)
        Dim i As Integer
        For i = myIntArray.GetLowerBound(0) To myIntArray.GetUpperBound(0)
            myIntArray.SetValue(i + 1, i)
        Next i 
        ' Creates and initializes a new Array of type Object.
        Dim myObjArray As Array = _
           Array.CreateInstance(GetType(System.Object), 5)
        For i = myObjArray.GetLowerBound(0) To myObjArray.GetUpperBound(0)
            myObjArray.SetValue(i + 26, i)
        Next i 
        ' Displays the initial values of both arrays.
        Console.WriteLine("Int32 array:")
        PrintValues(myIntArray)
        Console.WriteLine("Object array:")
        PrintValues(myObjArray)
        
        ' Copies the first element from the Int32 array to the Object array.
        Array.Copy(myIntArray, myIntArray.GetLowerBound(0), myObjArray, _
           myObjArray.GetLowerBound(0), 1)
        
        ' Copies the last two elements from the Object array to the Int32 array.
        Array.Copy(myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, _
           myIntArray.GetUpperBound(0) - 1, 2)
        
        ' Displays the values of the modified arrays.
        Console.WriteLine("Int32 array - Last two elements should now be " _
           + "the same as Object array:")
        PrintValues(myIntArray)
        Console.WriteLine("Object array - First element should now be the " _
           + "same as Int32 array:")
        PrintValues(myObjArray)
    End Sub
    
    Public Shared Sub PrintValues(myArr As Array)
        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(ControlChars.Tab + "{0}", myEnumerator.Current)
        End While
        Console.WriteLine()
    End Sub
End Class

' This code produces the following output.
' 
' Int32 array:
'     1    2    3    4    5
' Object array:
'     26    27    28    29    30
' Int32 array - Last two elements should now be the same as Object array:
'     1    2    3    29    30
' Object array - First element should now be the same as Int32 array:
'     1    27    28    29    30

Comentários

Os parâmetros sourceArray e destinationArray devem ter o mesmo número de dimensões.The sourceArray and destinationArray parameters must have the same number of dimensions. Além disso, destinationArray já deve ter sido dimensionável e deve ter um número suficiente de elementos a destinationIndex partir da posição para acomodar os dados copiados.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements starting from the destinationIndex position to accommodate the copied data.

Ao copiar entre matrizes multidimensionais, a matriz se comporta como uma matriz unidimensional longa, em que as linhas (ou colunas) são direcionadas conceitualmente de ponta a ponta.When copying between multidimensional arrays, the array behaves like a long one-dimensional array, where the rows (or columns) are conceptually laid end-to-end. Por exemplo, se uma matriz tivesse três linhas (ou colunas) com quatro elementos cada, a cópia de seis elementos do início da matriz copiaria todos os quatro elementos da primeira linha (ou coluna) e os dois primeiros elementos da segunda linha (ou coluna).For example, if an array has three rows (or columns) with four elements each, copying six elements from the beginning of the array would copy all four elements of the first row (or column) and the first two elements of the second row (or column). Para iniciar a cópia do segundo elemento da terceira linha (ou coluna), sourceIndex deve ser o limite superior da primeira linha (ou coluna) mais o comprimento da segunda linha (ou coluna) mais duas.To start copying from the second element of the third row (or column), sourceIndex must be the upper bound of the first row (or column) plus the length of the second row (or column) plus two.

Caso sourceArray e destinationArray se sobreponham, este método se comporta como se os valores originais de sourceArray foram preservados em um local temporário antes de destinationArray ser substituído.If sourceArray and destinationArray overlap, this method behaves as if the original values of sourceArray were preserved in a temporary location before destinationArray is overwritten.

[C++][C++]

Este método é equivalente à função padrão do C/C++ memmove, e não a memcpy.This method is equivalent to the standard C/C++ function memmove, not memcpy.

As matrizes podem ser matrizes do tipo referência ou matrizes do tipo valor.The arrays can be reference-type arrays or value-type arrays. O downcast de tipo é realizado, conforme necessário.Type downcasting is performed, as required.

  • Durante a cópia de uma matriz do tipo de referência para uma matriz do tipo de valor, cada elemento é convertido e, em seguida, copiado.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Durante a cópia de uma matriz do tipo de valor para uma matriz do tipo de referência, cada elemento é convertido e, em seguida, copiado.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Durante a cópia de uma matriz do tipo de referência ou do tipo de valor para um Object, um Object é criado para manter cada valor ou referência e, em seguida, copiá-lo.When copying from a reference-type or value-type array to an Object array, an Object is created to hold each value or reference and then copied. Durante a cópia de uma matriz Object para uma matriz do tipo de referência ou matriz do tipo de valor e a atribuição não é possível, InvalidCastException é lançado.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • Caso sourceArray e destinationArray sejam matrizes do tipo de referência ou ambas as matrizes do tipo Object, uma cópia superficial é realizada.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Uma cópia superficial de um Array é um novo Array contendo referências aos mesmos elementos do Arrayoriginal.A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Os próprios elementos ou nada referenciado pelos elementos não são copiados.The elements themselves or anything referenced by the elements are not copied. Por outro lado, uma cópia em profundidade de um Array copia os elementos e tudo direta ou indiretamente referenciado pelos elementos.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

Um ArrayTypeMismatchException será lançado se as matrizes forem de tipos incompatíveis.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. A compatibilidade de tipo é definida da seguinte forma:Type compatibility is defined as follows:

  • Um tipo é compatível com ele próprio.A type is compatible with itself.

  • Um tipo de valor é compatível com Object e com um tipo de interface implementado por esse tipo de valor.A value type is compatible with Object and with an interface type implemented by that value type. Um tipo de valor só é considerado conectado a uma interface caso implemente essa interface diretamente.A value type is considered connected to an interface only if it implements that interface directly. Os tipos desconectado não são compatíveis.Disconnected types are not compatible.

  • Dois tipos de valor intrínseco (predefinido) são compatíveis caso a cópia do tipo de fonte para o tipo de destino seja uma conversão de ampliação.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Uma conversão de ampliação jamais perde informações, e uma conversão de redução pode perder informações.A widening conversion never loses information, whereas a narrowing conversion can lose information. Por exemplo, a conversão de um inteiro assinado de 32 bits em um inteiro assinado de 64 bits é uma conversão de ampliação, e a conversão de um inteiro assinado de 64 bits em um inteiro assinado de 32 bits é uma conversão de redução.For example, converting a 32-bit signed integer to a 64-bit signed integer is a widening conversion, and converting a 64-bit signed integer to a 32-bit signed integer is a narrowing conversion. Para obter mais informações sobre conversões, consulte Convert.For more information about conversions, see Convert.

  • Um tipo de valor não intrínseco (definido pelo usuário) só é compatível com ele próprio.A nonintrinsic (user-defined) value type is compatible only with itself.

  • Enumerações têm uma conversão implícita em Enum e no tipo subjacente.Enumerations have an implicit conversion to Enum and to their underlying type.

Caso cada elemento em sourceArray exija um downcast (por exemplo, uma classe base para uma classe derivada ou de uma interface para um objeto) e um ou mais elementos não possam ser convertidos no tipo correspondente em destinationArray, InvalidCastException é lançado.If every element in sourceArray requires a downcast (for example, from a base class to a derived class or from an interface to an object) and one or more elements cannot be cast to the corresponding type in destinationArray, an InvalidCastException is thrown.

Caso esse método lance uma exceção durante a cópia, o estado de destinationArray é indefinido.If this method throws an exception while copying, the state of destinationArray is undefined.

Este método é uma operação O(n), em que n é length.This method is an O(n) operation, where n is length.

Veja também

Copy(Array, Array, Int64) Copy(Array, Array, Int64) Copy(Array, Array, Int64) Copy(Array, Array, Int64)

Copia um intervalo de elementos de uma Array iniciando no primeiro elemento e cola-o em outro Array, iniciando no primeiro elemento.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. O tamanho é especificado como um inteiro de 64 bits.The length is specified as a 64-bit integer.

public:
 static void Copy(Array ^ sourceArray, Array ^ destinationArray, long length);
public static void Copy (Array sourceArray, Array destinationArray, long length);
static member Copy : Array * Array * int64 -> unit
Public Shared Sub Copy (sourceArray As Array, destinationArray As Array, length As Long)

Parâmetros

sourceArray
Array Array Array Array

O Array que contém os dados a serem copiados.The Array that contains the data to copy.

destinationArray
Array Array Array Array

O Array que recebe os dados.The Array that receives the data.

length
Int64 Int64 Int64 Int64

Um inteiro de 64 bits que representa o número de elementos a se copiar.A 64-bit integer that represents the number of elements to copy. O inteiro deve estar entre zero e MaxValue, inclusive.The integer must be between zero and MaxValue, inclusive.

Exceções

sourceArray é null.sourceArray is null.

- ou --or- destinationArray é null.destinationArray is null.

sourceArray e destinationArray têm classificações diferentes.sourceArray and destinationArray have different ranks.

sourceArray e destinationArray são de tipos incompatíveis.sourceArray and destinationArray are of incompatible types.

Pelo menos um elemento em sourceArray não pode ser convertido no tipo de destinationArray.At least one element in sourceArray cannot be cast to the type of destinationArray.

length é maior que o número de elementos em sourceArray.length is greater than the number of elements in sourceArray.

- ou --or- length é maior que o número de elementos em destinationArray.length is greater than the number of elements in destinationArray.

Comentários

Os parâmetros sourceArray e destinationArray devem ter o mesmo número de dimensões.The sourceArray and destinationArray parameters must have the same number of dimensions. Além disso, destinationArray já deve ter sido dimensionável e deve ter um número suficiente de elementos para acomodar os dados copiados.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements to accommodate the copied data.

Ao copiar entre matrizes multidimensionais, a matriz se comporta como uma matriz unidimensional longa, em que as linhas (ou colunas) são posicionadas conceitualmente de ponta a ponta.When copying between multidimensional arrays, the array behaves like a long one-dimensional array, where the rows (or columns) are conceptually laid end to end. Por exemplo, se uma matriz tivesse três linhas (ou colunas) com quatro elementos cada, a cópia de seis elementos do início da matriz copiaria todos os quatro elementos da primeira linha (ou coluna) e os dois primeiros elementos da segunda linha (ou coluna).For example, if an array has three rows (or columns) with four elements each, copying six elements from the beginning of the array would copy all four elements of the first row (or column) and the first two elements of the second row (or column).

Caso sourceArray e destinationArray se sobreponham, este método se comporta como se os valores originais de sourceArray foram preservados em um local temporário antes de destinationArray ser substituído.If sourceArray and destinationArray overlap, this method behaves as if the original values of sourceArray were preserved in a temporary location before destinationArray is overwritten.

[C++][C++]

Este método é equivalente à função padrão do C/C++ memmove, e não a memcpy.This method is equivalent to the standard C/C++ function memmove, not memcpy.

As matrizes podem ser matrizes do tipo referência ou matrizes do tipo valor.The arrays can be reference-type arrays or value-type arrays. O downcast de tipo é realizado, conforme necessário.Type downcasting is performed, as required.

  • Durante a cópia de uma matriz do tipo de referência para uma matriz do tipo de valor, cada elemento é convertido e, em seguida, copiado.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Durante a cópia de uma matriz do tipo de valor para uma matriz do tipo de referência, cada elemento é convertido e, em seguida, copiado.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Durante a cópia de uma matriz do tipo de referência ou do tipo de valor para um Object, um Object é criado para manter cada valor ou referência e, em seguida, copiá-lo.When copying from a reference-type or value-type array to an Object array, an Object is created to hold each value or reference and then copied. Durante a cópia de uma matriz Object para uma matriz do tipo de referência ou matriz do tipo de valor e a atribuição não é possível, InvalidCastException é lançado.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • Caso sourceArray e destinationArray sejam matrizes do tipo de referência ou ambas as matrizes do tipo Object, uma cópia superficial é realizada.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Uma cópia superficial de um Array é um novo Array contendo referências aos mesmos elementos do Arrayoriginal.A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Os próprios elementos ou nada referenciado pelos elementos não são copiados.The elements themselves or anything referenced by the elements are not copied. Por outro lado, uma cópia em profundidade de um Array copia os elementos e tudo direta ou indiretamente referenciado pelos elementos.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

Um ArrayTypeMismatchException será lançado se as matrizes forem de tipos incompatíveis.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. A compatibilidade de tipo é definida da seguinte forma:Type compatibility is defined as follows:

  • Um tipo é compatível com ele próprio.A type is compatible with itself.

  • Um tipo de valor é compatível com Object e com um tipo de interface implementado por esse tipo de valor.A value type is compatible with Object and with an interface type implemented by that value type. Um tipo de valor só é considerado conectado a uma interface caso implemente essa interface diretamente.A value type is considered connected to an interface only if it implements that interface directly. Os tipos desconectado não são compatíveis.Disconnected types are not compatible.

  • Dois tipos de valor intrínseco (predefinido) são compatíveis caso a cópia do tipo de fonte para o tipo de destino seja uma conversão de ampliação.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Uma conversão de ampliação jamais perde informações, e uma conversão de redução pode perder informações.A widening conversion never loses information, whereas a narrowing conversion can lose information. Por exemplo, a conversão de um inteiro assinado de 32 bits em um inteiro assinado de 64 bits é uma conversão de ampliação, e a conversão de um inteiro assinado de 64 bits em um inteiro assinado de 32 bits é uma conversão de redução.For example, converting a 32-bit signed integer to a 64-bit signed integer is a widening conversion, and converting a 64-bit signed integer to a 32-bit signed integer is a narrowing conversion. Para obter mais informações sobre conversões, consulte Convert.For more information about conversions, see Convert.

  • Um tipo de valor não intrínseco (definido pelo usuário) só é compatível com ele próprio.A nonintrinsic (user-defined) value type is compatible only with itself.

  • Enumerações têm uma conversão implícita em Enum e no tipo subjacente.Enumerations have an implicit conversion to Enum and to their underlying type.

Caso cada elemento em sourceArray exija um downcast (por exemplo, uma classe base para uma classe derivada ou de uma interface para um objeto) e um ou mais elementos não possam ser convertidos no tipo correspondente em destinationArray, InvalidCastException é lançado.If every element in sourceArray requires a downcast (for example, from a base class to a derived class or from an interface to an object) and one or more elements cannot be cast to the corresponding type in destinationArray, an InvalidCastException is thrown.

Caso esse método lance uma exceção durante a cópia, o estado de destinationArray é indefinido.If this method throws an exception while copying, the state of destinationArray is undefined.

Este método é uma operação O(n), em que n é length.This method is an O(n) operation, where n is length.

Veja também

Copy(Array, Array, Int32) Copy(Array, Array, Int32) Copy(Array, Array, Int32) Copy(Array, Array, Int32)

Copia um intervalo de elementos de uma Array iniciando no primeiro elemento e cola-o em outro Array, iniciando no primeiro elemento.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. O comprimento é especificado como um inteiro de 32 bits.The length is specified as a 32-bit integer.

public:
 static void Copy(Array ^ sourceArray, Array ^ destinationArray, int length);
public static void Copy (Array sourceArray, Array destinationArray, int length);
static member Copy : Array * Array * int -> unit
Public Shared Sub Copy (sourceArray As Array, destinationArray As Array, length As Integer)

Parâmetros

sourceArray
Array Array Array Array

O Array que contém os dados a serem copiados.The Array that contains the data to copy.

destinationArray
Array Array Array Array

O Array que recebe os dados.The Array that receives the data.

length
Int32 Int32 Int32 Int32

Um inteiro de 32 bits que representa o número de elementos a se copiar.A 32-bit integer that represents the number of elements to copy.

Exceções

sourceArray é null.sourceArray is null.

- ou --or- destinationArray é null.destinationArray is null.

sourceArray e destinationArray têm classificações diferentes.sourceArray and destinationArray have different ranks.

sourceArray e destinationArray são de tipos incompatíveis.sourceArray and destinationArray are of incompatible types.

Pelo menos um elemento em sourceArray não pode ser convertido no tipo de destinationArray.At least one element in sourceArray cannot be cast to the type of destinationArray.

length é maior que o número de elementos em sourceArray.length is greater than the number of elements in sourceArray.

- ou --or- length é maior que o número de elementos em destinationArray.length is greater than the number of elements in destinationArray.

Comentários

Os parâmetros sourceArray e destinationArray devem ter o mesmo número de dimensões.The sourceArray and destinationArray parameters must have the same number of dimensions. Além disso, destinationArray já deve ter sido dimensionável e deve ter um número suficiente de elementos para acomodar os dados copiados.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements to accommodate the copied data.

Ao copiar entre matrizes multidimensionais, a matriz se comporta como uma matriz unidimensional longa, em que as linhas (ou colunas) são posicionadas conceitualmente de ponta a ponta.When copying between multidimensional arrays, the array behaves like a long one-dimensional array, where the rows (or columns) are conceptually laid end to end. Por exemplo, se uma matriz tivesse três linhas (ou colunas) com quatro elementos cada, a cópia de seis elementos do início da matriz copiaria todos os quatro elementos da primeira linha (ou coluna) e os dois primeiros elementos da segunda linha (ou coluna).For example, if an array has three rows (or columns) with four elements each, copying six elements from the beginning of the array would copy all four elements of the first row (or column) and the first two elements of the second row (or column).

Caso sourceArray e destinationArray se sobreponham, este método se comporta como se os valores originais de sourceArray foram preservados em um local temporário antes de destinationArray ser substituído.If sourceArray and destinationArray overlap, this method behaves as if the original values of sourceArray were preserved in a temporary location before destinationArray is overwritten.

[C++][C++]

Este método é equivalente à função padrão do C/C++ memmove, e não a memcpy.This method is equivalent to the standard C/C++ function memmove, not memcpy.

As matrizes podem ser matrizes do tipo referência ou matrizes do tipo valor.The arrays can be reference-type arrays or value-type arrays. O downcast de tipo é realizado, conforme necessário.Type downcasting is performed, as required.

  • Durante a cópia de uma matriz do tipo de referência para uma matriz do tipo de valor, cada elemento é convertido e, em seguida, copiado.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Durante a cópia de uma matriz do tipo de valor para uma matriz do tipo de referência, cada elemento é convertido e, em seguida, copiado.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Durante a cópia de uma matriz do tipo de referência ou do tipo de valor para um Object, um Object é criado para manter cada valor ou referência e, em seguida, copiá-lo.When copying from a reference-type or value-type array to an Object array, an Object is created to hold each value or reference and then copied. Durante a cópia de uma matriz Object para uma matriz do tipo de referência ou matriz do tipo de valor e a atribuição não é possível, InvalidCastException é lançado.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • Caso sourceArray e destinationArray sejam matrizes do tipo de referência ou ambas as matrizes do tipo Object, uma cópia superficial é realizada.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Uma cópia superficial de um Array é um novo Array contendo referências aos mesmos elementos do Arrayoriginal.A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Os próprios elementos ou nada referenciado pelos elementos não são copiados.The elements themselves or anything referenced by the elements are not copied. Por outro lado, uma cópia em profundidade de um Array copia os elementos e tudo direta ou indiretamente referenciado pelos elementos.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

Um ArrayTypeMismatchException será lançado se as matrizes forem de tipos incompatíveis.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. A compatibilidade de tipo é definida da seguinte forma:Type compatibility is defined as follows:

  • Um tipo é compatível com ele próprio.A type is compatible with itself.

  • Um tipo de valor é compatível com Object e com um tipo de interface implementado por esse tipo de valor.A value type is compatible with Object and with an interface type implemented by that value type. Um tipo de valor só é considerado conectado a uma interface caso implemente essa interface diretamente.A value type is considered connected to an interface only if it implements that interface directly. Os tipos desconectado não são compatíveis.Disconnected types are not compatible.

  • Dois tipos de valor intrínseco (predefinido) são compatíveis caso a cópia do tipo de fonte para o tipo de destino seja uma conversão de ampliação.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Uma conversão de ampliação jamais perde informações, e uma conversão de redução pode perder informações.A widening conversion never loses information, whereas a narrowing conversion can lose information. Por exemplo, a conversão de um inteiro assinado de 32 bits em um inteiro assinado de 64 bits é uma conversão de ampliação, e a conversão de um inteiro assinado de 64 bits em um inteiro assinado de 32 bits é uma conversão de redução.For example, converting a 32-bit signed integer to a 64-bit signed integer is a widening conversion, and converting a 64-bit signed integer to a 32-bit signed integer is a narrowing conversion. Para obter mais informações sobre conversões, consulte Convert.For more information about conversions, see Convert.

  • Um tipo de valor não intrínseco (definido pelo usuário) só é compatível com ele próprio.A nonintrinsic (user-defined) value type is compatible only with itself.

  • Enumerações têm uma conversão implícita em Enum e no tipo subjacente.Enumerations have an implicit conversion to Enum and to their underlying type.

Caso cada elemento em sourceArray exija um downcast (por exemplo, uma classe base para uma classe derivada ou de uma interface para um objeto) e um ou mais elementos não possam ser convertidos no tipo correspondente em destinationArray, InvalidCastException é lançado.If every element in sourceArray requires a downcast (for example, from a base class to a derived class or from an interface to an object) and one or more elements cannot be cast to the corresponding type in destinationArray, an InvalidCastException is thrown.

Caso esse método lance uma exceção durante a cópia, o estado de destinationArray é indefinido.If this method throws an exception while copying, the state of destinationArray is undefined.

Este método é uma operação O(n), em que n é length.This method is an O(n) operation, where n is length.

Veja também

Aplica-se a