深度复制

通过序列化来执行深度复制,将对象序列化成二进制流,然后通过二进制反序列化给 某个新对象。这样就达到了深度复制的目的。

二进制序列化可以让对象保真(只要类加上[Serializable],不管私有成员还是共有成员  全部序列化),而另外普通的XML 序列化 则不能保真(因为不对private序列化)

另: MSDN 上所述的  类继承Icloneable  实现clone() 方法也可以,如果一个成员是A对象,A对象里又有B对象成员,那么非常繁琐。

所以尽量使用  序列化来完成。

[Serializable]
public  class deepcopy
  {
      public static T DeepClone<T>(T obj)
      {
          using (var ms = new MemoryStream())
          {
              var formatter = new BinaryFormatter();
              formatter.Serialize(ms, obj);
              ms.Position = 0;

              return (T)formatter.Deserialize(ms);
          }
      }
  }

原文地址:https://www.cnblogs.com/StudyLife/p/2625916.html