Heim >Backend-Entwicklung >C++ >Wie kann ich eine echte Kopie eines Objekts in C# erstellen?

Wie kann ich eine echte Kopie eines Objekts in C# erstellen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-13 12:35:42398Durchsuche

How Can I Create a True Copy of an Object in C#?

Kopieren von Objekten in C#: eingehende Analyse

Der folgende Codeausschnitt zeigt ein Szenario, in dem zwei Objektreferenzen objectA und objectB auf dieselbe Instanz der Klasse MyClass verweisen. Dies ist ein häufiges Verhalten bei Referenztypen in C#, da sie nur auf einen Speicherort verweisen und nicht die Daten selbst enthalten. In einigen Fällen ist es jedoch erforderlich, völlig unabhängige Kopien des Objekts zu erstellen, die auf unterschiedliche Speicheradressen verweisen.

Verwenden Sie ICloneable für flache Kopien

Um ein flaches Kopieren zu implementieren (nur das Kopieren des Status von Nicht-Referenztyp-Mitgliedern des Originalobjekts), stellt C# die ICloneable-Schnittstelle bereit. Durch die Implementierung dieser Schnittstelle kann eine Klasse ein benutzerdefiniertes Klonverhalten definieren.

<code class="language-csharp">class myClass : ICloneable
{
    public String test;
    public object Clone()
    {
        return this.MemberwiseClone();
    }
}</code>
Die

MemberwiseClone-Methode führt eine flache Kopie des Objekts durch und kopiert die Werte aller Nicht-Referenztyp-Mitglieder. Wir erstellen einen benutzerdefinierten Klonmechanismus für die ICloneable-Klasse, indem wir MemberwiseClone implementieren und ihre Clone-Methode mit MyClass überschreiben.

Unabhängige Objekte erstellen

Um eine eigenständige Instanz von MyClass zu erstellen, verwenden Sie die Clone-Methode:

<code class="language-csharp">myClass a = new myClass();
myClass b = (myClass)a.Clone();</code>

Dadurch verweist objectB auf eine neue Instanz von MyClass, die eine andere Speicheradresse als objectA hat. Es ist jedoch wichtig zu beachten, dass es sich um eine flache Kopie handelt, was bedeutet, dass alle Referenztypmitglieder innerhalb des Objekts immer noch auf denselben Speicherort wie das Originalobjekt verweisen. Um eine tiefe Kopie zu implementieren, ist normalerweise ein weiteres Kopieren von Referenztypmitgliedern erforderlich.

Das obige ist der detaillierte Inhalt vonWie kann ich eine echte Kopie eines Objekts in C# erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn