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>
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>
<code class="language-csharp">MyClass a = new MyClass(); MyClass b = (MyClass)a.Clone();</code>
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!