我对这两种将一个对象复制到另一个对象的方法有点陌生。我很困惑,无法找出深层复制和浅层复制之间的主要区别。我已经了解了很多关于此的理论,但我需要用适当的例子进行解释。
我有一个程序,可以将一个对象复制到另一个对象中。 -->
class A
{
public int a = 0;
public void display()
{
Console.WriteLine("The value of a is " + a);
}
}
class Program
{
static void Main(string[] args)
{
A ob1 = new A();
ob1.a = 10;
ob1.display();
A ob2 = new A();
ob2 = ob1;
ob2.display();
Console.Read();
}
}
这是浅拷贝还是深拷贝?谁能给个答案并附上理由。如果它是深复制,那么请提供浅复制的代码,以便该程序执行与对象复制相同的工作,反之亦然。
如果上面是浅拷贝,那么连这个也应该是浅拷贝-->
A ob1 = new A();
ob1.a = 10;
ob1.display();
A ob2 = ob1;
ob2.a = 444;
ob1.display();
从链接here
浅拷贝尽可能少地重复。 a 的浅拷贝
集合是集合结构的副本,而不是元素。
通过浅拷贝,两个集合现在共享单独的
元素。
深拷贝复制一切。一个集合的深拷贝是两个
包含原始集合中所有元素的集合
重复的。
您的示例正在创建浅副本。
A ob1 = new A();
ob1.a = 10;
A ob2 = new A();
ob2 = ob1;
ob1.a = 5; // <-- If you see value of ob2.a after this line, it will be 5.
深拷贝将是 -
A ob1 = new A();
ob1.a = 10;
A ob2 = new A();
ob2.a = ob1.a;
ob1.a = 5; // <-- If you see value of ob2.a after this line, it will be 10.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)