淺拷貝(影子克隆):只複製對象的基本類型,對象類型,仍屬於原來的引用.
深拷貝(深度克隆):不緊複製對象的基本類,同時也複製原對象中的對象.就是說徹底是新對象產生的.
在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 }