什么是浅拷贝以及它如何不同于 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 次浏览

启动你的 职业生涯

通过完成课程获取认证

开始
广告
© . All rights reserved.