Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Object::MemberwiseClone ()

 

Data di pubblicazione: ottobre 2016

Crea una copia superficiale dell'oggetto Object corrente.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

protected:
Object^ MemberwiseClone()

Valore restituito

Type: System::Object^

Copia superficiale dell'oggetto Object corrente.

Il MemberwiseClone metodo crea una copia superficiale creando un nuovo oggetto e quindi copiando i campi non statici dell'oggetto corrente al nuovo oggetto. Se un campo è un tipo di valore, viene eseguita una copia bit per bit del campo. Se un campo è un tipo riferimento, il riferimento viene copiato ma l'oggetto cui viene fatto riferimento non; Pertanto, l'oggetto originale e il suo clone fare riferimento allo stesso oggetto.

Si consideri ad esempio un oggetto denominato X che fa riferimento a oggetti A e B, a sua volta, oggetto references C. Una copia superficiale di X Crea nuovo oggetto X2 che fa riferimento a oggetti A e B. Al contrario, una copia completa di X crea un nuovo oggetto X2 che fa riferimento a nuovi oggetti A2 e B2, che sono copie di e B. B2, fa riferimento a sua volta, il nuovo oggetto C2, che è una copia di C. Nell'esempio viene illustrata la differenza tra un shallow e un'operazione di copia completa.

Esistono diversi modi per implementare un'operazione di copia completa se eseguire l'operazione di copia dei riferimenti per il MemberwiseClone metodo non soddisfa le proprie esigenze. tra cui:

  • Chiamare un costruttore di classe dell'oggetto da copiare per creare un secondo oggetto con valori di proprietà ricavati dal primo oggetto. Si presuppone che i valori di un oggetto sono completamente definiti dal costruttore di classe.

  • Chiamare il MemberwiseClone per creare una copia superficiale di un oggetto e quindi assegnare nuovi oggetti i cui valori sono gli stessi dell'oggetto originale a qualsiasi proprietà o campi i cui valori sono i tipi di riferimento. Il DeepCopy metodo nell'esempio riportato di seguito viene illustrato questo approccio.

  • Serializzare l'oggetto verrà approfondito copiati e quindi ripristinare i dati serializzati a una variabile di un oggetto diverso.

  • Per eseguire l'operazione di copia completa, usare la reflection viene utilizzata la ricorsione.

Nell'esempio seguente viene illustrato il MemberwiseClone metodo. Definisce un ShallowCopy metodo che chiama il MemberwiseClone metodo per eseguire un'operazione di copia dei riferimenti in un Person oggetto. Definisce inoltre un DeepCopy metodo che esegue un'operazione di copia completa su un Person oggetto.

Non sono attualmente disponibili esempi di codice o questo linguaggio potrebbe non essere supportato.

In this example, the Person.IdInfo property returns an IdInfo object. As the output from the example shows, when a Person object is cloned by calling the M:System.Object.MemberwiseClone method, the cloned Person object is an independent copy of the original object, except that they share the same Person.IdInfo object reference. As a result, modifying the clone's Person.IdInfo property changes the original object's Person.IdInfo property. On the other hand, when a deep copy operation is performed, the cloned Person object, including its Person.IdInfo property, can be modified without affecting the original object.

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: