Was ist flache Kopie und wie unterscheidet sie sich von tiefer Kopie in C#?

王林
Freigeben: 2023-09-06 19:41:09
nach vorne
602 Leute haben es durchsucht

什么是浅复制以及它与 C# 中的深复制有何不同?

Flache Kopie

Flache Kopie bezieht sich auf das Kopieren des „Hauptteils“ eines Objekts, nicht jedoch auf das Kopieren der inneren Teile Objekte.

Die „inneren Objekte“ werden vom Originalobjekt und seiner Kopie gemeinsam genutzt.

Das Problem mit der flachen Kopie besteht darin, dass die beiden Objekte nicht unabhängig sind Ändern Sie ein Objekt und die Änderungen werden im anderen Objekt widergespiegelt.

Deep Copy

Eine Deep Copy ist eine völlig unabhängige Kopie eines Objekts. Wenn wir unser Objekt kopieren, würde die gesamte Objektstruktur kopieren.

Wenn Sie das eine Objekt ändern, wird die Änderung nicht im anderen Objekt widergespiegelt.

Beispiel

class Program{
   static void Main(string[] args){
      //Shallow Copy
      ShallowCopy obj = new ShallowCopy();
      obj.a = 10;
      ShallowCopy obj1 = new ShallowCopy();
      obj1 = obj;
      Console.WriteLine("{0} {1}", obj1.a, obj.a); // 10,10
      obj1.a = 5;
      Console.WriteLine("{0} {1}", obj1.a, obj.a); //5,5
      //Deep Copy
      DeepCopy d = new DeepCopy();
      d.a = 10;
      DeepCopy d1 = new DeepCopy();
      d1.a = d.a;
      Console.WriteLine("{0} {1}", d1.a, d.a); // 10,10
      d1.a = 5;
      Console.WriteLine("{0} {1}", d1.a, d.a); //5,10
      Console.ReadLine();
   }
}
class ShallowCopy{
   public int a = 10;
}
class DeepCopy{
   public int a = 10;
}
Nach dem Login kopieren

Ausgabe

10 10
5 5
10 10
5 10
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas ist flache Kopie und wie unterscheidet sie sich von tiefer Kopie in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage