首頁  >  文章  >  後端開發  >  什麼是淺複製以及它與 C# 中的深複製有何不同?

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

王林
王林轉載
2023-09-06 19:41:09542瀏覽

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

淺拷貝

淺拷貝是指拷貝一個物件的"主要"部分,但不拷貝內部的部分 objects.

The "inner objects" are shared between the original object and its copy.

The problem with the shallow copy is that the two objects are not independent. If you 修改一個對象,改變將會反映在另一個對象。

深拷貝

深拷貝是完全獨立的物件副本。如果我們複製了我們的對象, would copy the entire object structure.

If you modify the one object, the change will not be reflected in the other object.

Example

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

##rrr
10 10
5 5
10 10
5 10

以上是什麼是淺複製以及它與 C# 中的深複製有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除