2012-04-30 7 views
6

Questa dovrebbe essere una domanda piuttosto semplice, ma ho avuto qualche problema nel trovare una risposta definitiva.In C# Array.ToArray() esegue una copia DEEP?

Quando si dispone di un array di valori e si utilizza il metodo .ToArray(), viene creata una copia profonda o superficiale dell'array?

+0

In realtà stavo cercando una risposta a questo su Internet prima di aver scritto un test rapido per questo (che non è veloce come usare Google). Penso che il motivo per il punteggio -1 sulla domanda sia solo a causa di un fraintendimento tra la copia profonda, la copia superficiale e il riferimento agli oggetti (ciò che probabilmente si riferisce a una copia superficiale). – capn

risposta

13

No.

È possibile verificare facilmente scrivendo un piccolo programma da testare.

+0

+1. Si noti che se è array di struct copierà i valori (copia ancora superficiale). –

+0

Ho appena creato un piccolo programma con una stringa [] con 3 elementi in esso, ho quindi creato un nuovo array con = origArray.ToArray() Ho quindi cambiato un elemento nel nuovo array e stampato entrambi gli array e loro dove erano diversi, questo non significa che è una copia profonda? cosa sto guardando oltre? – hrh

+2

Non esiste un modo integrato per fare una copia profonda in C#, quindi probabilmente la definizione di "profondità" è inusuale. Considera di fare una nuova domanda "che cosa è la copia profonda, ecco la mia comprensione ..." (non dimenticare di spiegare chiaramente come la capisci in modo che altre persone possano confermare/commentare su quale parte della tua comprensione è sbagliata o non tradizionale) . –