Heim > Backend-Entwicklung > C++ > Wie erstelle ich beim Umgang mit Referenztypen echte Kopien von Objekten in C#?

Wie erstelle ich beim Umgang mit Referenztypen echte Kopien von Objekten in C#?

Barbara Streisand
Freigeben: 2025-01-13 12:33:52
Original
975 Leute haben es durchsucht

How Do I Create True Copies of Objects in C# When Dealing with Reference Types?

Objektklonen in C#: Referenztypen verstehen

In C# sind Objekte in erster Linie Referenztypen, was bedeutet, dass sie auf den Speicherort verweisen, an dem ihre Daten gespeichert sind. Dies steht im Gegensatz zu Werttypen, die ihre Daten direkt in ihren Variablen enthalten. Wenn eine Kopie eines Referenztyps erstellt wird, wird nur eine Kopie der Referenz erstellt, nicht der tatsächlichen Daten, auf die sie verweist.

Beispiel: Referenztypen verstehen

Bedenken Sie den folgenden Code:

<code class="language-csharp">public class MyClass
{
    public int val;
}

public struct myStruct
{
    public int val;
}

public class Program
{
    public static void Main(string[] args)
    {
        MyClass objectA = new MyClass();
        MyClass objectB = objectA;

        objectA.val = 10;
        objectB.val = 20;

        Console.WriteLine($"objectA.val = {objectA.val}");
        Console.WriteLine($"objectB.val = {objectB.val}");
    }
}</code>
Nach dem Login kopieren

Die Ausgabe dieses Codes zeigt, dass ObjektA und ObjektB trotz der Änderungen denselben Wert haben, was darauf hinweist, dass sie sich auf denselben Speicherort beziehen.

Referenztypobjekt klonen

Um eine Kopie eines Referenztypobjekts zu erstellen, die sich vom Originalobjekt unterscheidet, müssen Sie das Objekt klonen. Dabei wird ein neues Objekt erstellt, das dieselben Eigenschaften und Werte wie das ursprüngliche Objekt aufweist, jedoch an einem separaten Speicherort gespeichert wird.

ICloneable-Schnittstelle verwenden

In C# können Sie die ICloneable-Schnittstelle zum Klonen von Objekten verwenden. Klassen, die diese Schnittstelle implementieren, stellen eine Clone-Methode bereit, die eine Kopie des Objekts erstellt.

Das Folgende ist ein Beispiel für die Verwendung der ICloneable-Schnittstelle:

<code class="language-csharp">public class MyClass : ICloneable
{
    public string test;

    public object Clone()
    {
        return this.MemberwiseClone();
    }
}</code>
Nach dem Login kopieren
<code class="language-csharp">MyClass a = new MyClass();
MyClass b = (MyClass)a.Clone();</code>
Nach dem Login kopieren

In diesem Beispiel wird die von der ICloneable-Schnittstelle bereitgestellte Clone-Methode überschrieben, um ein neues Objekt mit denselben Eigenschaften wie das ursprüngliche Objekt zu erstellen, wodurch das Objekt effektiv geklont wird.

Das obige ist der detaillierte Inhalt vonWie erstelle ich beim Umgang mit Referenztypen echte Kopien von Objekten in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage