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