什麼是淺複製以及它如何不同於 C# 中的深複製?


淺複製

物件的淺複製複製“主”物件,但不復制內部物件。

“內部物件”在原始物件及其副本之間共享。

淺複製的問題在於這兩個物件不獨立。如果您修改其中一個物件,則更改將反映在另一個物件中。

深複製

深複製是物件的完全獨立複製。如果我們複製我們的物件,我們將複製整個物件結構。

如果您修改其中一個物件,則更改不會反映在另一個物件中。

示例

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;
}

輸出

10 10
5 5
10 10
5 10

更新日期:19- 8-2020

993 次瀏覽

啟動你的 職業生涯

透過完成課程獲取認證

開始
廣告