zoukankan      html  css  js  c++  java
  • [转载]C#深拷贝的方法

     首先了解下深拷贝和浅拷贝的定义:

          浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用.
          深拷贝(深度克隆):不紧复制对象的基本类,同时也复制原对象中的对象.就是说完全是新对象产生的. 
          在C#中,复制一个基本类型,是全盘复制的。而对于引用类型,只是复制一个引用指针。所以在对其进行深拷贝也是比较麻烦的,要实现ICloneable接口的Clone方法。
          当然也有其他比较快的方法,下面这个是在网上找到的代码。只需要将一个对象序列化为binary stream,然后再将它反序列化为新的对象,就能实现深拷贝。代码如下:

     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         }
  • 相关阅读:
    C++中的explicitkeyword
    Stream使用教程
    Java实现最长回文串
    Java实现最长回文串
    Java实现最长回文串
    Java实现选择问题
    Java实现选择问题
    Java实现选择问题
    Java实现选择问题
    Java实现选择问题
  • 原文地址:https://www.cnblogs.com/Peter-Luo/p/3523781.html
Copyright © 2011-2022 走看看