2012-04-30 11 views
6

Esta debería ser una pregunta bastante básica, pero he tenido problemas para encontrar una respuesta definitiva.En C# hace Array.ToArray() realizar una copia DEEP?

Cuando tiene una matriz de valores y utiliza el método .ToArray(), ¿crea una copia profunda o superficial de la matriz?

+0

En realidad, estaba buscando una respuesta a esto en Internet antes de escribir una prueba rápida (que no es tan rápida como buscar en Google). Creo que la razón de la calificación -1 en la pregunta es solo porque estás entendiendo mal entre Copia profunda, Copia superficial y referencia de objeto (a lo que probablemente te refieres como copia superficial). – capn

Respuesta

13

Usted puede fácilmente verificar esta escribiendo un pequeño programa para probar.

+0

+1. Tenga en cuenta que si se trata de una matriz de struct, copiará los valores (copia aún superficial). –

+0

Acabo de crear un pequeño programa con una cadena [] con 3 elementos, luego creé una nueva matriz con = origArray.ToArray() Luego cambié un elemento en la nueva matriz e imprimí ambas matrices y éstas eran diferentes, ¿no significa esto que es una copia profunda? ¿Qué estoy buscando? – hrh

+2

No existe una forma integrada para hacer una copia profunda en C#, por lo que probablemente su definición de "profundo" sea inusual. Considere hacer una nueva pregunta "¿Qué es copia profunda, este es mi entendimiento ..." (no se olvide de explicar claramente cómo la entiende para que otras personas puedan confirmar/comentar qué parte de su comprensión es incorrecta O no tradicional) . –

Cuestiones relacionadas