Sommario:
Definizione: che cosa significa Shallow Copy?
La copia superficiale, in C #, è il processo di creazione di un clone di un oggetto creando un'istanza di una nuova istanza dello stesso tipo dell'oggetto originale e copiando i membri non statici dell'oggetto esistente sul clone. I membri del tipo di valore vengono copiati bit per bit mentre i membri del tipo di riferimento vengono copiati in modo tale che l'oggetto riferito e il suo clone facciano riferimento allo stesso oggetto.
In generale, la copia superficiale viene utilizzata quando le prestazioni sono uno dei requisiti insieme alla condizione che l'oggetto non venga mutato in tutta l'applicazione. Passando il clone contenente dati immutabili, viene eliminata la possibilità di corruzione da parte di qualsiasi codice. La copia superficiale risulta efficiente quando i riferimenti agli oggetti consentono agli oggetti di essere passati dall'indirizzo di memoria in modo che non sia necessario copiare l'intero oggetto.
La copia superficiale è anche nota come copia membro.
Techopedia spiega la copia superficiale
La copia superficiale è simile alla copia profonda nell'assegnazione di ciascun membro di un oggetto a quella di un altro oggetto, ma differisce nel modo in cui viene copiato il campo del tipo di riferimento. A differenza della copia superficiale in cui viene copiato solo il riferimento, nella copia profonda viene creata una nuova copia dell'oggetto a cui viene fatto riferimento.
Ad esempio, si consideri un oggetto dipendente che contenga dettagli di informazioni personali, incluso un elenco di oggetti indirizzo che memorizzano più indirizzi impiegato. Eseguendo una copia superficiale di un oggetto dipendente, è possibile creare un clone dell'oggetto dipendente con riferimenti allo stesso elenco di oggetti indirizzo che appartengono all'oggetto dipendente originale.
I metodi per eseguire la copia superficiale includono:- Chiamare il metodo MemberwiseClone dell'oggetto
- Crea un clone manualmente attraverso un metodo personalizzato che è noioso ma facile da controllare
- Utilizzare una tecnica di riflessione che fornisce funzionalità automatizzate per eseguire copie superficiali, ma con sovraccarico delle prestazioni
- Utilizzare un metodo di serializzazione più lento della riflessione ma automatizzato e semplice