浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用.
深拷贝(深度克隆):不紧复制对象的基本类,同时也复制原对象中的对象.就是说彻底是新对象产生的.
在C#中,复制一个基本类型,是全盘复制的。而对于引用类型,只是复制一个引用指针。因此在对其进行深拷贝也是比较麻烦的,要实现ICloneable接口的Clone方法。
固然也有其余比较快的方法,下面这个是在网上找到的代码。只须要将一个对象序列化为binary stream,而后再将它反序列化为新的对象,就能实现深拷贝。代码以下:post
1 public static T CloneOf<T>(T serializableObject) 2 { 3 object objCopy = null; 4 5 MemoryStream stream = new MemoryStream(); 6 BinaryFormatter binFormatter = new BinaryFormatter(); 7 binFormatter.Serialize(stream, serializableObject); 8 stream.Position = 0; 9 objCopy = (T) binFormatter.Deserialize(stream); 10 stream.Close(); 11 return (T) objCopy; 12 13 }