龙空技术网

C#浅复制与深复制

五人成才 47

前言:

而今我们对“c深度复制”大概比较看重,小伙伴们都想要剖析一些“c深度复制”的相关文章。那么小编在网上搜集了一些对于“c深度复制””的相关资讯,希望小伙伴们能喜欢,我们一起来学习一下吧!

为对象创建副本的技术称为复制,复制分为浅复制与深复制。

浅复制:将对象中的所有字段复制到新的对象中,

a、值类型字段被复制到新对象中,修改不会影响原来对象的值。

b、引用类型的复制是引用类型的引用到新对象,而不是引用类型的对象,修改引用类型的值,影响原对象的值。

深复制:将原对象的复制到新的对象中,不过,无论是值类型,还是引用类型,都是重新创建并赋值修改不影响原对象的值。

[Serializable]

public class DepartMent

{

public string Name { get; set; }

}

[Serializable]

public class WorkInfo : ICloneable

{

public int ID { get; set; }

public string Name { get; set; }

public int Age { get; set; }

public DepartMent departMent { get; set; } = new DepartMent();

public override string ToString()

{

return "ID:" + ID.ToString() + Environment.NewLine

+ "Name:" + Name + Environment.NewLine

+ "Age:" + Age.ToString() + Environment.NewLine +

"Departmen:" + departMent.Name.ToString() + Environment.NewLine + Environment.NewLine;

}

public object Clone()

{

return this.MemberwiseClone();

}

public WorkInfo ShallowClone()

{

return Clone() as WorkInfo;

}

public WorkInfo DeepClone()

{

using (MemoryStream ms = new MemoryStream())

{

IFormatter formatter = new BinaryFormatter();

formatter.Serialize(ms, this);

ms.Seek(0, SeekOrigin.Begin);

return formatter.Deserialize(ms) as WorkInfo;

}

}

}

标签: #c深度复制