实现 System.ICloneable 接口的以下函数
public object Clone()
{
return MemberwiseClone(); //值类型的话可以达到深拷贝的目的
}
[Serializable]
class Person:ICloneable
{
/// <summary>
/// 字符串在clone 中类似于值类型的处理方式
/// </summary>
public string Name { get; set; }
//引用类型 clone
public List<int> lis = new List<int>();
/// <summary>
/// 深拷贝
/// </summary>
/// <returns></returns>
public object DeepClone()
{
MemoryStream ms = new MemoryStream();
BinaryFormatter format = new BinaryFormatter();
format.Serialize(ms, this);
ms.Position = 0;
return format.Deserialize(ms);
//return base.MemberwiseClone();//浅拷贝
}
/// <summary>
/// 浅拷贝 也可以在里面实现深拷贝的功能,比方说循环为引用类型赋值
/// </summary>
/// <returns></returns>
public object Clone()
{
return base.MemberwiseClone();//浅拷贝
}
}