众所周知在C++、C中有一个内存拷贝函数memcpy,但是在C#似乎没有这个方法,如此,我们new出来的对象又都是引用类型,给我们的赋值多少带来些麻烦,今天在做一个项目的时候就出现了这种情况。
1 Student std1 = new Student(); 2 Student std2 = std1;
以上代码就是我们经常用到的赋值方式,如果修改std2中的值,std1的值也会随着变,而很多时候我们不希望std1跟着一起变,所以就需要我们进行内存拷贝来实现:
public object Clone() { BinaryFormatter BF = new BinaryFormatter(); MemoryStream ms = new MemoryStream(); BF.Serialize(ms, this); ms.Flush(); ms.Position = 0; //内残流指针返回流动开始处,否则调用Deserialize方法会抛出异常 return (BF.Deserialize(ms)); //throw new Exception("The method or operation is not implemented."); }
在此需要注意,该方法是接口类ICloneable的方法,ICloneable支持克隆操作,类需要继承该接口并去实现这个方法。