Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- sourceIndex
- Int32
Entero de 32 bits que representa el índice de la sourceArray
en la que se empieza a copiar.
- 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
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 memmove
estándar de C/C++ , no memcpy
a .
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
.