Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

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

Copia un intervalo de elementos de una matriz Array comenzando en el primer elemento y los pega en otra matriz Array comenzando en el primer elemento. La longitud se especifica como un entero de 32 bits.

Espacio de nombres:  System
Ensamblado:  mscorlib (en mscorlib.dll)

public static void Copy(
	Array sourceArray,
	Array destinationArray,
	int length
)

Parámetros

sourceArray
Tipo: System.Array
Array que contiene los datos que se van a copiar.
destinationArray
Tipo: System.Array
Array que recibe los datos.
length
Tipo: System.Int32
Entero de 32 bits que representa el número de elementos que se van a copiar.

ExcepciónCondición
ArgumentNullException

sourceArray es null.

O bien

destinationArray es null.

RankException

sourceArray y destinationArray tienen rangos distintos.

ArrayTypeMismatchException

sourceArray y destinationArray son matrices de tipos incompatibles.

InvalidCastException

Al menos un elemento de sourceArray no puede convertirse en el tipo de destinationArray.

ArgumentOutOfRangeException

length es menor que cero.

ArgumentException

length es mayor que el número de elementos de sourceArray.

O bien

length es mayor que el número de elementos de destinationArray.

Los parámetros sourceArray y destinationArray deben tener el mismo número de dimensiones. Además, destinationArray debe haberse dimensionado ya y debe tener un número suficiente de elementos para alojar los datos copiados.

Cuando se realizan operaciones de copia entre matrices multidimensionales, la matriz se comporta como una matriz unidimensional larga, donde las filas (o columnas) se distribuyen de forma conceptual de un extremo a otro. Por ejemplo, si una matriz tiene tres filas (o columnas) con cuatro elementos cada una, una operación de copia de seis elementos desde el principio de la matriz, copiará los cuatro elementos de la primera fila (o columna) y los primeros dos elementos de la segunda fila (o columna).

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

[C++]

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

Las matrices pueden ser de tipo de referencia o de tipo de valor. Si es necesario, se realiza una conversión inferior de tipo.

  • Cuando se realiza una operación de copia de una matriz de tipo de referencia a una matriz de tipo de valor, a cada elemento se le aplica una conversión unboxing y, a continuación, se copia. Cuando se realiza una operación de copia de una matriz de tipo de valor a una matriz de tipo de referencia, a cada elemento se le aplica una conversión boxing y, a continuación, se copia.

  • Cuando se realiza una operación de copia de una matriz de tipo de referencia o de tipo de valor a una matriz Object, se crea un Object donde se almacena cada valor o referencia y, a continuación, se copia. Cuando se realiza una operación de copia de una matriz Object a una matriz de tipo de valor o de referencia y la asignación no es posible, se produce una excepción InvalidCastException.

  • Si sourceArray y destinationArray son matrices de tipo de referencia o de tipo Object, se realiza una copia superficial. Una copia superficial de Array es una nueva matriz Array que contiene referencias a los mismos elementos que la matriz Array original. No se copian los propios elementos ni ningún otro objeto al que hagan referencia. Por otro lado, una copia profunda de Array copia los elementos y todo aquello a lo que hacen referencia directa o indirectamente los elementos.

Si las matrices son matrices de tipos incompatibles, se produce una excepción ArrayTypeMismatchException. La compatibilidad de tipos se define a continuación:

  • Un tipo es compatible con sigo mismo.

  • Un tipo de valor es compatible con Object y con un tipo de interfaz implementado por dicho tipo de valor. Se considera que un tipo de valor está conectado a una interfaz solo si implementa dicha interfaz directamente. Los tipos desconectados no son compatibles.

  • Dos tipos de valor intrínsecos (predefinidos) son compatibles si la operación de copia del tipo de origen al tipo de destino es una conversión de ampliación. Una conversión de ampliación nunca pierde información, mientras que una conversión de restricción puede perder información. Por ejemplo, la conversión de un entero de 32 bits con signo a un entero de 64 bits con signo es una conversión de ampliación, mientras que la conversión de un entero de 64 bits con signo a un entero de 32 bits con signo es una conversión de restricción. Para obtener más información sobre las conversiones, vea Convert.

  • Un tipo de valor no intrínseco (definido por el usuario) sólo es compatible con sigo mismo.

  • Las enumeraciones tienen una conversión implícita en Enum y en su tipo subyacente.

Si cada elemento de sourceArray requiere una conversión inferior (por ejemplo, de una clase base a una clase derivada o de una interfaz a un objeto) y uno o más elementos no pueden convertirse en el tipo correspondiente de destinationArray, se produce una excepción InvalidCastException.

Si este método produce una excepción durante la operación de copia, el estado de destinationArray queda sin definir.

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

.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft