[轉載]C#深拷貝的方法

 首先了解下深拷貝和淺拷貝的定義:

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