使用序列化的方法实现深度拷贝非常方便
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
<font color=blue>[Serializable]</font>
class Person : ICloneable
{
public object Clone()
{
return this.MemberwiseClone();
}
public Person DeepClone()
{
using(Stream os = new MemoryStream())
{
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(os, this);
os.Seek(0, SeekOrigin.Begin);
return formatter.Deserialize(os) as Person;
}
}
public Person ShallowClone()
{
return Clone() as Person;
}
}
网友评论