一个简单的浅拷贝实现代码:
class Sample : iCloneable
{
public String Name {get; set;}
public object Clone()
{
return this.memberwiseClone();
}
}
用法如下:
Sample sample1 = new Sample {Name="wlc"};
Sample sample2 = sample1.Clone as Sample;
浅拷贝中,值的拷贝是不可修改的,引用的拷贝的内容是可以修改的。
同时实现深拷贝跟浅拷贝,模型如下:
class Sample : iCloneable
{
public String Name {get; set;}
public object Clone()
{
return this.memberwiseClone();
}
public Sample DeepClone()
{
using (Stream object = new MemorySream())
{
IFormatter if = new BinaryFormatter();
if.Serialize(object, this);
object.Seek(0, SeekOrigin.Begin);
return if.Deserialize(object) as Sample;
}
}
public Sample ShallowClone()
{
return Clone() as Sample;
}
}