浅拷贝-
对象的浅表副本将复制“主”对象,但不复制内部对象。
“内部对象”在原始对象及其副本之间共享。
浅表副本的问题在于两个对象不是独立的。如果修改一个对象,则更改将反映在另一个对象中。
深度复制-
深层副本是对象的完全独立的副本。如果我们复制对象,则将复制整个对象结构。
如果修改一个对象,则更改将不会反映在另一个对象中。
class Program{
static void Main(string[] args){
//浅拷贝
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
//深度复制
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