Compartir vía


Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Método

Definición

Copia un intervalo de elementos de un objeto Array a partir del índice de origen especificado y los pega en otro objeto Array a partir del índice de destino especificado. Garantiza que se deshacen todos los cambios si la copia no se realiza de forma totalmente correcta.

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

Parámetros

sourceArray
Array

Array que contiene los datos que se van a copiar.

sourceIndex
Int32

Entero de 32 bits que representa el índice de la sourceArray en la que se empieza a copiar.

destinationArray
Array

Array que recibe los datos.

destinationIndex
Int32

Entero de 32 bits que representa el índice de la destinationArray en la que se empieza a almacenar.

length
Int32

Entero de 32 bits que representa el número de elementos que se van a copiar.

Excepciones

sourceArray es null.

o bien

destinationArray es null.

sourceArray y destinationArray tienen clasificaciones diferentes.

El tipo sourceArray no es el mismo ni se deriva del tipo destinationArray.

Al menos un elemento de la sourceArray no se puede convertir al tipo de destinationArray.

sourceIndex es menor que el límite inferior de la primera dimensión de sourceArray.

o bien

destinationIndex es menor que el límite inferior de la primera dimensión de destinationArray.

o bien

length es menor que cero.

length es mayor que el número de elementos desde sourceIndex hasta el final de sourceArray.

o bien

length es mayor que el número de elementos desde destinationIndex hasta el final de destinationArray.

Comentarios

Los sourceArray parámetros y destinationArray deben tener el mismo número de dimensiones. El sourceArray tipo debe ser el mismo que o derivado del destinationArray tipo; de lo contrario, se produce una ArrayTypeMismatchException excepción . A diferencia Copyde , ConstrainedCopy comprueba la compatibilidad de los tipos de matriz antes de realizar cualquier operación.

Al copiar entre matrices multidimensionales, la matriz se comporta como una matriz unidimensional larga, donde las filas (o columnas) se colocan conceptualmente de un extremo a otro. Por ejemplo, si una matriz tiene tres filas (o columnas) con cuatro elementos cada uno, al copiar seis elementos desde el principio de la matriz se copiarán los cuatro elementos de la primera fila (o columna) y los dos primeros elementos de la segunda fila (o columna). Para empezar a copiar desde el segundo elemento de la tercera fila (o columna), sourceIndex debe ser el límite superior de la primera fila (o columna) más la longitud de la segunda fila (o columna) más dos.

Si sourceArray y destinationArray se superponen, este método se comporta como si los valores originales de sourceArray se conservaran en una ubicación temporal antes destinationArray de sobrescribirse.

[C++]

Este método es equivalente a la función memmoveestándar de C/C++ , no memcpya .

Las matrices pueden ser matrices de tipo referencia o matrices de tipo valor. Si sourceArray y destinationArray son matrices de tipo de referencia o son matrices de tipo Object, se realiza una copia superficial. Una copia superficial de un Array objeto es una nueva Array que contiene referencias a los mismos elementos que el original Array. Los propios elementos o cualquier cosa a la que hacen referencia los elementos no se copian. Por el contrario, una copia profunda de un Array copia los elementos y todo lo que hace referencia directa o indirectamente por los elementos.

Si este método produce una excepción mientras se copia, permanece destinationArray sin cambios; por lo tanto, ConstrainedCopy se puede usar dentro de una región de ejecución restringida (Cer).

Este método es una operación O(n), donde n es length.

Se aplica a

Consulte también