zoukankan      html  css  js  c++  java
  • 深度复制

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

    二进制序列化可以让对象保真(只要类加上[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);
              }
          }
      }

  • 相关阅读:
    Vim step by step
    Ubuntu解压命令全览
    这样才能使本地Mysql服务允许被外部主机连接(两步)
    [Python] logging.logger
    Python Selenium
    MySQL中char、varchar和text的区别
    Way to MongoDB
    Python误区之strip,lstrip,rstrip
    Android Studio Tips
    Way to tmux
  • 原文地址:https://www.cnblogs.com/StudyLife/p/2625916.html
Copyright © 2011-2022 走看看