Array.Copy Méthode

Définition

Copie une plage d’éléments d’un Array vers un autre Array et effectue éventuellement le casting de type et le boxing.Copies a range of elements in one Array to another Array and performs type casting and boxing as required.

Surcharges

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

Copie une plage d’éléments à partir d’un Array commençant à l’index source spécifié et les colle dans un autre Array commençant à l’index de destination spécifié.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. La longueur et les index sont spécifiés en tant qu’entiers 64 bits.The length and the indexes are specified as 64-bit integers.

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

Copie une plage d’éléments à partir d’un Array commençant à l’index source spécifié et les colle dans un autre Array commençant à l’index de destination spécifié.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. La longueur et les index sont spécifiés en tant qu’entiers 32 bits.The length and the indexes are specified as 32-bit integers.

Copy(Array, Array, Int64)

Copie une série d’éléments de Array en commençant au premier élément, et les colle dans un autre Array en commençant au premier élément.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. La longueur est spécifiée sous forme d'un entier 64 bits.The length is specified as a 64-bit integer.

Copy(Array, Array, Int32)

Copie une série d’éléments de Array en commençant au premier élément, et les colle dans un autre Array en commençant au premier élément.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. La longueur est spécifiée sous forme d'un entier 32 bits.The length is specified as a 32-bit integer.

Exemples

L’exemple de code suivant montre comment effectuer une copie d’un Array type Object vers un autre Array type Integer.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

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

Copie une plage d’éléments à partir d’un Array commençant à l’index source spécifié et les colle dans un autre Array commençant à l’index de destination spécifié.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. La longueur et les index sont spécifiés en tant qu’entiers 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)

Paramètres

sourceArray
Array

Array qui contient les données à copier.The Array that contains the data to copy.

sourceIndex
Int64

Entier 64 bits qui représente l’index du sourceArray auquel la copie commence.A 64-bit integer that represents the index in the sourceArray at which copying begins.

destinationArray
Array

Array qui reçoit les données.The Array that receives the data.

destinationIndex
Int64

Entier 64 bits qui représente l’index du destinationArray auquel le stockage commence.A 64-bit integer that represents the index in the destinationArray at which storing begins.

length
Int64

Entier 64 bits qui représente le nombre d’éléments à copier.A 64-bit integer that represents the number of elements to copy. L’entier doit être compris entre zéro et MaxValue, inclus.The integer must be between zero and MaxValue, inclusive.

Exceptions

sourceArray a la valeur null.sourceArray is null.

- ou --or- destinationArray a la valeur null.destinationArray is null.

sourceArray et destinationArray ont des classements différents.sourceArray and destinationArray have different ranks.

sourceArray et destinationArray sont de types incompatibles.sourceArray and destinationArray are of incompatible types.

Au moins un élément de sourceArray ne peut pas être converti en type destinationArray.At least one element in sourceArray cannot be cast to the type of destinationArray.

sourceIndex est en dehors de la plage d’index valides pour sourceArray.sourceIndex is outside the range of valid indexes for the sourceArray.

- ou --or- destinationIndex est en dehors de la plage d’index valides pour destinationArray.destinationIndex is outside the range of valid indexes for the destinationArray.

- ou --or- length est inférieur à 0 ou supérieur à MaxValue.length is less than 0 or greater than MaxValue.

length est supérieur au nombre d’éléments compris entre sourceIndex et la fin de sourceArray.length is greater than the number of elements from sourceIndex to the end of sourceArray.

- ou --or- length est supérieur au nombre d’éléments compris entre destinationIndex et la fin de destinationArray.length is greater than the number of elements from destinationIndex to the end of destinationArray.

Remarques

Les sourceArray destinationArray paramètres et doivent avoir le même nombre de dimensions.The sourceArray and destinationArray parameters must have the same number of dimensions. En outre, destinationArray doit déjà avoir été dimensionné et doit avoir un nombre suffisant d’éléments à partir de la destinationIndex position pour accueillir les données copiées.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.

Lors d’une copie entre des tableaux multidimensionnels, le tableau se comporte comme un tableau unidimensionnel de type long, où les lignes (ou les colonnes) sont conceptuellement de bout en bout.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. Par exemple, si un tableau a trois lignes (ou colonnes) avec quatre éléments chacun, la copie de six éléments à partir du début du tableau copie les quatre éléments de la première ligne (ou colonne) et les deux premiers éléments de la deuxième ligne (ou colonne).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). Pour commencer à copier à partir du deuxième élément de la troisième ligne (ou colonne), il sourceIndex doit s’agir de la limite supérieure de la première ligne (ou colonne) et de la longueur de la deuxième ligne (ou colonne) plus deux.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.

Si sourceArray et destinationArray se chevauchent, cette méthode se comporte comme si les valeurs d’origine de sourceArray étaient conservées dans un emplacement temporaire avant d' destinationArray être remplacées.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++]

Cette méthode est équivalente à la fonction C/C++ standard memmove , et non à la fonction memcpy .This method is equivalent to the standard C/C++ function memmove, not memcpy.

Les tableaux peuvent être des tableaux de types référence ou des tableaux de type valeur.The arrays can be reference-type arrays or value-type arrays. Le type passer est exécuté, le cas échéant.Type downcasting is performed, as required.

  • Lors de la copie d’un tableau de type référence vers un tableau de type valeur, chaque élément est unboxed, puis copié.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Lors de la copie d’un tableau de type valeur vers un tableau de type référence, chaque élément est boxed, puis copié.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Lors de la copie à partir d’un tableau de type référence ou de type valeur vers un Object tableau, un Object est créé pour contenir chaque valeur ou référence, puis copié.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. Lors de la copie d’un Object tableau dans un tableau de type référence ou valeur et l’assignation n’est pas possible, une InvalidCastException exception est levée.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • Si sourceArray et destinationArray sont tous deux des tableaux de types référence ou des deux tableaux de type Object , une copie superficielle est effectuée.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Une copie superficielle d’un Array est un nouveau Array contenant des références aux mêmes éléments que le d’origine Array .A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Les éléments eux-mêmes ou tout élément référencé par les éléments ne sont pas copiés.The elements themselves or anything referenced by the elements are not copied. En revanche, une copie complète d’un Array copie les éléments et tout ce qui est directement ou indirectement référencé par les éléments.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

Une ArrayTypeMismatchException exception est levée si les tableaux sont de types incompatibles.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. La compatibilité de type est définie comme suit :Type compatibility is defined as follows:

  • Un type est compatible avec lui-même.A type is compatible with itself.

  • Un type valeur est compatible avec Object et avec un type interface implémenté par ce type valeur.A value type is compatible with Object and with an interface type implemented by that value type. Un type valeur est considéré comme connecté à une interface uniquement s’il implémente directement cette interface.A value type is considered connected to an interface only if it implements that interface directly. Les types déconnectés ne sont pas compatibles.Disconnected types are not compatible.

  • Deux types valeur intrinsèques (prédéfinis) sont compatibles si la copie du type source vers le type de destination est une conversion étendue.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Une conversion étendue ne perd jamais d’informations, alors qu’une conversion restrictive peut perdre des informations.A widening conversion never loses information, whereas a narrowing conversion can lose information. Par exemple, la conversion d’un entier signé 32 bits en entier signé 64 bits est une conversion étendue, et la conversion d’un entier signé 64 bits en entier signé 32 bits est une conversion restrictive.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. Pour plus d’informations sur les conversions, consultez Convert .For more information about conversions, see Convert.

  • Un type valeur non intrinsèque (défini par l’utilisateur) est compatible uniquement avec lui-même.A nonintrinsic (user-defined) value type is compatible only with itself.

  • Les énumérations ont une conversion implicite vers Enum et vers leur type sous-jacent.Enumerations have an implicit conversion to Enum and to their underlying type.

Si chaque élément dans sourceArray requiert un cast aval (par exemple, d’une classe de base vers une classe dérivée ou d’une interface vers un objet) et un ou plusieurs éléments ne peuvent pas être castés en type correspondant dans destinationArray , une InvalidCastException exception est levée.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.

Si cette méthode lève une exception lors de la copie, l’état de destinationArray n’est pas défini.If this method throws an exception while copying, the state of destinationArray is undefined.

Cette méthode est une opération O ( n ), où n est length .This method is an O(n) operation, where n is length.

Voir aussi

S’applique à

Produit Introduced

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

Copie une plage d’éléments à partir d’un Array commençant à l’index source spécifié et les colle dans un autre Array commençant à l’index de destination spécifié.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. La longueur et les index sont spécifiés en tant qu’entiers 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)

Paramètres

sourceArray
Array

Array qui contient les données à copier.The Array that contains the data to copy.

sourceIndex
Int32

Entier 32 bits qui représente l’index du sourceArray auquel la copie commence.A 32-bit integer that represents the index in the sourceArray at which copying begins.

destinationArray
Array

Array qui reçoit les données.The Array that receives the data.

destinationIndex
Int32

Entier 32 bits qui représente l’index du destinationArray auquel le stockage commence.A 32-bit integer that represents the index in the destinationArray at which storing begins.

length
Int32

Entier 32 bits qui représente le nombre d'éléments à copier.A 32-bit integer that represents the number of elements to copy.

Exceptions

sourceArray a la valeur null.sourceArray is null.

- ou --or- destinationArray a la valeur null.destinationArray is null.

sourceArray et destinationArray ont des classements différents.sourceArray and destinationArray have different ranks.

sourceArray et destinationArray sont de types incompatibles.sourceArray and destinationArray are of incompatible types.

Au moins un élément de sourceArray ne peut pas être converti en type destinationArray.At least one element in sourceArray cannot be cast to the type of destinationArray.

sourceIndex est inférieur à la limite inférieure de la première dimension de sourceArray.sourceIndex is less than the lower bound of the first dimension of sourceArray.

- ou --or- destinationIndex est inférieur à la limite inférieure de la première dimension de destinationArray.destinationIndex is less than the lower bound of the first dimension of destinationArray.

- ou --or- length est inférieur à zéro.length is less than zero.

length est supérieur au nombre d’éléments compris entre sourceIndex et la fin de sourceArray.length is greater than the number of elements from sourceIndex to the end of sourceArray.

- ou --or- length est supérieur au nombre d’éléments compris entre destinationIndex et la fin de destinationArray.length is greater than the number of elements from destinationIndex to the end of destinationArray.

Remarques

Les sourceArray destinationArray paramètres et doivent avoir le même nombre de dimensions.The sourceArray and destinationArray parameters must have the same number of dimensions. En outre, destinationArray doit déjà avoir été dimensionné et doit avoir un nombre suffisant d’éléments à partir de la destinationIndex position pour accueillir les données copiées.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.

Lors d’une copie entre des tableaux multidimensionnels, le tableau se comporte comme un tableau unidimensionnel de type long, où les lignes (ou les colonnes) sont conceptuellement de bout en bout.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. Par exemple, si un tableau a trois lignes (ou colonnes) avec quatre éléments chacun, la copie de six éléments à partir du début du tableau copie les quatre éléments de la première ligne (ou colonne) et les deux premiers éléments de la deuxième ligne (ou colonne).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). Pour commencer à copier à partir du deuxième élément de la troisième ligne (ou colonne), il sourceIndex doit s’agir de la limite supérieure de la première ligne (ou colonne) et de la longueur de la deuxième ligne (ou colonne) plus deux.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.

Si sourceArray et destinationArray se chevauchent, cette méthode se comporte comme si les valeurs d’origine de sourceArray étaient conservées dans un emplacement temporaire avant d' destinationArray être remplacées.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++]

Cette méthode est équivalente à la fonction C/C++ standard memmove , et non à la fonction memcpy .This method is equivalent to the standard C/C++ function memmove, not memcpy.

Les tableaux peuvent être des tableaux de types référence ou des tableaux de type valeur.The arrays can be reference-type arrays or value-type arrays. Le type passer est exécuté, le cas échéant.Type downcasting is performed, as required.

  • Lors de la copie d’un tableau de type référence vers un tableau de type valeur, chaque élément est unboxed, puis copié.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Lors de la copie d’un tableau de type valeur vers un tableau de type référence, chaque élément est boxed, puis copié.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Lors de la copie à partir d’un tableau de type référence ou de type valeur vers un Object tableau, un Object est créé pour contenir chaque valeur ou référence, puis copié.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. Lors de la copie d’un Object tableau dans un tableau de type référence ou valeur et l’assignation n’est pas possible, une InvalidCastException exception est levée.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • Si sourceArray et destinationArray sont tous deux des tableaux de types référence ou des deux tableaux de type Object , une copie superficielle est effectuée.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Une copie superficielle d’un Array est un nouveau Array contenant des références aux mêmes éléments que le d’origine Array .A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Les éléments eux-mêmes ou tout élément référencé par les éléments ne sont pas copiés.The elements themselves or anything referenced by the elements are not copied. En revanche, une copie complète d’un Array copie les éléments et tout ce qui est directement ou indirectement référencé par les éléments.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

Une ArrayTypeMismatchException exception est levée si les tableaux sont de types incompatibles.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. La compatibilité de type est définie comme suit :Type compatibility is defined as follows:

  • Un type est compatible avec lui-même.A type is compatible with itself.

  • Un type valeur est compatible avec Object et avec un type interface implémenté par ce type valeur.A value type is compatible with Object and with an interface type implemented by that value type. Un type valeur est considéré comme connecté à une interface uniquement s’il implémente directement cette interface.A value type is considered connected to an interface only if it implements that interface directly. Les types déconnectés ne sont pas compatibles.Disconnected types are not compatible.

  • Deux types valeur intrinsèques (prédéfinis) sont compatibles si la copie du type source vers le type de destination est une conversion étendue.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Une conversion étendue ne perd jamais d’informations, alors qu’une conversion restrictive peut perdre des informations.A widening conversion never loses information, whereas a narrowing conversion can lose information. Par exemple, la conversion d’un entier signé 32 bits en entier signé 64 bits est une conversion étendue, et la conversion d’un entier signé 64 bits en entier signé 32 bits est une conversion restrictive.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. Pour plus d’informations sur les conversions, consultez Convert .For more information about conversions, see Convert.

  • Un type valeur non intrinsèque (défini par l’utilisateur) est compatible uniquement avec lui-même.A nonintrinsic (user-defined) value type is compatible only with itself.

  • Les énumérations ont une conversion implicite vers Enum et vers leur type sous-jacent.Enumerations have an implicit conversion to Enum and to their underlying type.

Si chaque élément dans sourceArray requiert un cast aval (par exemple, d’une classe de base vers une classe dérivée ou d’une interface vers un objet) et un ou plusieurs éléments ne peuvent pas être castés en type correspondant dans destinationArray , une InvalidCastException exception est levée.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.

Si cette méthode lève une exception lors de la copie, l’état de destinationArray n’est pas défini.If this method throws an exception while copying, the state of destinationArray is undefined.

Cette méthode est une opération O ( n ), où n est length .This method is an O(n) operation, where n is length.

Voir aussi

S’applique à

Produit Introduced

Copy(Array, Array, Int64)

Copie une série d’éléments de Array en commençant au premier élément, et les colle dans un autre Array en commençant au premier élément.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. La longueur est spécifiée sous forme d'un entier 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)

Paramètres

sourceArray
Array

Array qui contient les données à copier.The Array that contains the data to copy.

destinationArray
Array

Array qui reçoit les données.The Array that receives the data.

length
Int64

Entier 64 bits qui représente le nombre d’éléments à copier.A 64-bit integer that represents the number of elements to copy. L’entier doit être compris entre zéro et MaxValue, inclus.The integer must be between zero and MaxValue, inclusive.

Exceptions

sourceArray a la valeur null.sourceArray is null.

- ou --or- destinationArray a la valeur null.destinationArray is null.

sourceArray et destinationArray ont des classements différents.sourceArray and destinationArray have different ranks.

sourceArray et destinationArray sont de types incompatibles.sourceArray and destinationArray are of incompatible types.

Au moins un élément de sourceArray ne peut pas être converti en type destinationArray.At least one element in sourceArray cannot be cast to the type of destinationArray.

length est inférieur à 0 ou supérieur à MaxValue.length is less than 0 or greater than MaxValue.

length est supérieur au nombre d’éléments de sourceArray.length is greater than the number of elements in sourceArray.

- ou --or- length est supérieur au nombre d’éléments de destinationArray.length is greater than the number of elements in destinationArray.

Remarques

Les sourceArray destinationArray paramètres et doivent avoir le même nombre de dimensions.The sourceArray and destinationArray parameters must have the same number of dimensions. En outre, destinationArray doit déjà avoir été dimensionné et doit avoir un nombre suffisant d’éléments pour prendre en charge les données copiées.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements to accommodate the copied data.

Lors d’une copie entre des tableaux multidimensionnels, le tableau se comporte comme un tableau unidimensionnel de type long, où les lignes (ou les colonnes) sont présentées de bout en bout.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. Par exemple, si un tableau a trois lignes (ou colonnes) avec quatre éléments chacun, la copie de six éléments à partir du début du tableau copie les quatre éléments de la première ligne (ou colonne) et les deux premiers éléments de la deuxième ligne (ou colonne).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).

Si sourceArray et destinationArray se chevauchent, cette méthode se comporte comme si les valeurs d’origine de sourceArray étaient conservées dans un emplacement temporaire avant d' destinationArray être remplacées.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++]

Cette méthode est équivalente à la fonction C/C++ standard memmove , et non à la fonction memcpy .This method is equivalent to the standard C/C++ function memmove, not memcpy.

Les tableaux peuvent être des tableaux de types référence ou des tableaux de type valeur.The arrays can be reference-type arrays or value-type arrays. Le type passer est exécuté, le cas échéant.Type downcasting is performed, as required.

  • Lors de la copie d’un tableau de type référence vers un tableau de type valeur, chaque élément est unboxed, puis copié.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Lors de la copie d’un tableau de type valeur vers un tableau de type référence, chaque élément est boxed, puis copié.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Lors de la copie à partir d’un tableau de type référence ou de type valeur vers un Object tableau, un Object est créé pour contenir chaque valeur ou référence, puis copié.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. Lors de la copie d’un Object tableau dans un tableau de type référence ou valeur et l’assignation n’est pas possible, une InvalidCastException exception est levée.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • Si sourceArray et destinationArray sont tous deux des tableaux de types référence ou des deux tableaux de type Object , une copie superficielle est effectuée.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Une copie superficielle d’un Array est un nouveau Array contenant des références aux mêmes éléments que le d’origine Array .A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Les éléments eux-mêmes ou tout élément référencé par les éléments ne sont pas copiés.The elements themselves or anything referenced by the elements are not copied. En revanche, une copie complète d’un Array copie les éléments et tout ce qui est directement ou indirectement référencé par les éléments.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

Une ArrayTypeMismatchException exception est levée si les tableaux sont de types incompatibles.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. La compatibilité de type est définie comme suit :Type compatibility is defined as follows:

  • Un type est compatible avec lui-même.A type is compatible with itself.

  • Un type valeur est compatible avec Object et avec un type interface implémenté par ce type valeur.A value type is compatible with Object and with an interface type implemented by that value type. Un type valeur est considéré comme connecté à une interface uniquement s’il implémente directement cette interface.A value type is considered connected to an interface only if it implements that interface directly. Les types déconnectés ne sont pas compatibles.Disconnected types are not compatible.

  • Deux types valeur intrinsèques (prédéfinis) sont compatibles si la copie du type source vers le type de destination est une conversion étendue.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Une conversion étendue ne perd jamais d’informations, alors qu’une conversion restrictive peut perdre des informations.A widening conversion never loses information, whereas a narrowing conversion can lose information. Par exemple, la conversion d’un entier signé 32 bits en entier signé 64 bits est une conversion étendue, et la conversion d’un entier signé 64 bits en entier signé 32 bits est une conversion restrictive.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. Pour plus d’informations sur les conversions, consultez Convert .For more information about conversions, see Convert.

  • Un type valeur non intrinsèque (défini par l’utilisateur) est compatible uniquement avec lui-même.A nonintrinsic (user-defined) value type is compatible only with itself.

  • Les énumérations ont une conversion implicite vers Enum et vers leur type sous-jacent.Enumerations have an implicit conversion to Enum and to their underlying type.

Si chaque élément dans sourceArray requiert un cast aval (par exemple, d’une classe de base vers une classe dérivée ou d’une interface vers un objet) et un ou plusieurs éléments ne peuvent pas être castés en type correspondant dans destinationArray , une InvalidCastException exception est levée.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.

Si cette méthode lève une exception lors de la copie, l’état de destinationArray n’est pas défini.If this method throws an exception while copying, the state of destinationArray is undefined.

Cette méthode est une opération O ( n ), où n est length .This method is an O(n) operation, where n is length.

Voir aussi

S’applique à

Produit Introduced

Copy(Array, Array, Int32)

Copie une série d’éléments de Array en commençant au premier élément, et les colle dans un autre Array en commençant au premier élément.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. La longueur est spécifiée sous forme d'un entier 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)

Paramètres

sourceArray
Array

Array qui contient les données à copier.The Array that contains the data to copy.

destinationArray
Array

Array qui reçoit les données.The Array that receives the data.

length
Int32

Entier 32 bits qui représente le nombre d'éléments à copier.A 32-bit integer that represents the number of elements to copy.

Exceptions

sourceArray a la valeur null.sourceArray is null.

- ou --or- destinationArray a la valeur null.destinationArray is null.

sourceArray et destinationArray ont des classements différents.sourceArray and destinationArray have different ranks.

sourceArray et destinationArray sont de types incompatibles.sourceArray and destinationArray are of incompatible types.

Au moins un élément de sourceArray ne peut pas être converti en type destinationArray.At least one element in sourceArray cannot be cast to the type of destinationArray.

length est inférieur à zéro.length is less than zero.

length est supérieur au nombre d’éléments de sourceArray.length is greater than the number of elements in sourceArray.

- ou --or- length est supérieur au nombre d’éléments de destinationArray.length is greater than the number of elements in destinationArray.

Remarques

Les sourceArray destinationArray paramètres et doivent avoir le même nombre de dimensions.The sourceArray and destinationArray parameters must have the same number of dimensions. En outre, destinationArray doit déjà avoir été dimensionné et doit avoir un nombre suffisant d’éléments pour prendre en charge les données copiées.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements to accommodate the copied data.

Lors d’une copie entre des tableaux multidimensionnels, le tableau se comporte comme un tableau unidimensionnel de type long, où les lignes (ou les colonnes) sont présentées de bout en bout.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. Par exemple, si un tableau a trois lignes (ou colonnes) avec quatre éléments chacun, la copie de six éléments à partir du début du tableau copie les quatre éléments de la première ligne (ou colonne) et les deux premiers éléments de la deuxième ligne (ou colonne).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).

Si sourceArray et destinationArray se chevauchent, cette méthode se comporte comme si les valeurs d’origine de sourceArray étaient conservées dans un emplacement temporaire avant d' destinationArray être remplacées.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++]

Cette méthode est équivalente à la fonction C/C++ standard memmove , et non à la fonction memcpy .This method is equivalent to the standard C/C++ function memmove, not memcpy.

Les tableaux peuvent être des tableaux de types référence ou des tableaux de type valeur.The arrays can be reference-type arrays or value-type arrays. Le type passer est exécuté, le cas échéant.Type downcasting is performed, as required.

  • Lors de la copie d’un tableau de type référence vers un tableau de type valeur, chaque élément est unboxed, puis copié.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Lors de la copie d’un tableau de type valeur vers un tableau de type référence, chaque élément est boxed, puis copié.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Lors de la copie à partir d’un tableau de type référence ou de type valeur vers un Object tableau, un Object est créé pour contenir chaque valeur ou référence, puis copié.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. Lors de la copie d’un Object tableau dans un tableau de type référence ou valeur et l’assignation n’est pas possible, une InvalidCastException exception est levée.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • Si sourceArray et destinationArray sont tous deux des tableaux de types référence ou des deux tableaux de type Object , une copie superficielle est effectuée.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Une copie superficielle d’un Array est un nouveau Array contenant des références aux mêmes éléments que le d’origine Array .A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Les éléments eux-mêmes ou tout élément référencé par les éléments ne sont pas copiés.The elements themselves or anything referenced by the elements are not copied. En revanche, une copie complète d’un Array copie les éléments et tout ce qui est directement ou indirectement référencé par les éléments.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

Une ArrayTypeMismatchException exception est levée si les tableaux sont de types incompatibles.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. La compatibilité de type est définie comme suit :Type compatibility is defined as follows:

  • Un type est compatible avec lui-même.A type is compatible with itself.

  • Un type valeur est compatible avec Object et avec un type interface implémenté par ce type valeur.A value type is compatible with Object and with an interface type implemented by that value type. Un type valeur est considéré comme connecté à une interface uniquement s’il implémente directement cette interface.A value type is considered connected to an interface only if it implements that interface directly. Les types déconnectés ne sont pas compatibles.Disconnected types are not compatible.

  • Deux types valeur intrinsèques (prédéfinis) sont compatibles si la copie du type source vers le type de destination est une conversion étendue.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Une conversion étendue ne perd jamais d’informations, alors qu’une conversion restrictive peut perdre des informations.A widening conversion never loses information, whereas a narrowing conversion can lose information. Par exemple, la conversion d’un entier signé 32 bits en entier signé 64 bits est une conversion étendue, et la conversion d’un entier signé 64 bits en entier signé 32 bits est une conversion restrictive.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. Pour plus d’informations sur les conversions, consultez Convert .For more information about conversions, see Convert.

  • Un type valeur non intrinsèque (défini par l’utilisateur) est compatible uniquement avec lui-même.A nonintrinsic (user-defined) value type is compatible only with itself.

  • Les énumérations ont une conversion implicite vers Enum et vers leur type sous-jacent.Enumerations have an implicit conversion to Enum and to their underlying type.

Si chaque élément dans sourceArray requiert un cast aval (par exemple, d’une classe de base vers une classe dérivée ou d’une interface vers un objet) et un ou plusieurs éléments ne peuvent pas être castés en type correspondant dans destinationArray , une InvalidCastException exception est levée.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.

Si cette méthode lève une exception lors de la copie, l’état de destinationArray n’est pas défini.If this method throws an exception while copying, the state of destinationArray is undefined.

Cette méthode est une opération O ( n ), où n est length .This method is an O(n) operation, where n is length.

Voir aussi

S’applique à

Produit Introduced