前言:
而今我们对“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深度复制