什么是浅拷贝?它与C#中的深拷贝有何不同?
浅拷贝-
对象的浅表副本将复制“主”对象,但不复制内部对象。
“内部对象”在原始对象及其副本之间共享。
浅表副本的问题在于两个对象不是独立的。如果修改一个对象,则更改将反映在另一个对象中。
深度复制-
深层副本是对象的完全独立的副本。如果我们复制对象,则将复制整个对象结构。
如果修改一个对象,则更改将不会反映在另一个对象中。
示例
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
热门推荐
10 团体年会祝福语简短霸气
11 宝宝生病简短祝福语大全
12 结婚祝福语亲姐姐简短
13 生日哥哥祝福语简短独特
14 生日祝福语简短激励女生
15 对学姐的简短祝福语
16 宝宝新年祝福语大全简短
17 对睡觉的祝福语简短
18 给医生简短新年祝福语