Heim >Backend-Entwicklung >C++ >Wie kann man Objekte in .NET tiefe kopieren?

Wie kann man Objekte in .NET tiefe kopieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-02-02 14:01:10229Durchsuche

How to Deep Copy Objects in .NET?

Tiefe Kopien von Objekten in .NET

erreichen

Dieser Artikel befasst sich mit der Herausforderung, tiefe Kopien von Objekten im .NET -Framework zu erstellen und eine Lösung anzubieten, die mit der inhärenten tiefen Kopienfunktionalität von Java vergleichbar ist.

Die Lösung:

Eine generische Dienstprogrammmethode liefert einen einfachen Ansatz für das tiefe Kopieren:

<code class="language-csharp">public static T DeepClone<T>(this T obj)
{
    using (var ms = new MemoryStream())
    {
        var formatter = new BinaryFormatter();
        formatter.Serialize(ms, obj);
        ms.Position = 0;
        return (T)formatter.Deserialize(ms);
    }
}</code>

Kritische Überlegung:

Es ist entscheidend zu erkennen, dass BinaryFormatter, das in dieser Methode verwendet wird, veraltet ist und zur Entfernung von .NET geplant ist. Erforschen Sie alternative Deep Copy -Strategien für die zukünftige Kompatibilität.

Implementierungsdetails:

Um diese Methode zu verwenden, stellen Sie sicher, dass Ihre Klasse mit dem Attribut [Serializable] gekennzeichnet ist. Fügen Sie die erforderlichen Namespaces ein:

<code class="language-csharp">using System.Runtime.Serialization.Formatters.Binary;
using System.IO;</code>

Mechanismus:

Der Prozess umfasst zwei wichtige Schritte:

  1. Serialisierung: Das Eingabefiel wird mit BinaryFormatter serialisiert, wodurch es in einem Speicherstrom speichert.
  2. Deserialisierung: Die serialisierten Daten werden aus dem Stream abgerufen, was zur Erstellung eines neuen, unabhängigen Objekts führt. Dieses neue Objekt ist eine tiefe Kopie.

Vorbehalte:

  • Diese Methode funktioniert nur mit serialisierbaren Klassen.
  • Kreisförmige Referenzen innerhalb der Struktur des Objekts können zu Ausnahmen führen.

Das obige ist der detaillierte Inhalt vonWie kann man Objekte in .NET tiefe kopieren?. 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