C#.NET对象深拷贝

1.使用前需将要序列化的类标记为Serializable

2.

//深拷贝
        public static object Clone(object obj)
        {
            //创建内存流
            MemoryStream ms = new MemoryStream();
            //以二进制格式进行序列化
            BinaryFormatter bf = new BinaryFormatter();
            bf.Serialize(ms, obj);
            //反序列化当前实例到一个object
            ms.Seek(0, 0);
            object res = bf.Deserialize(ms);
            //关闭内存流
            ms.Close();
            return res;
        }

  

时间: 2024-10-06 12:08:36

C#.NET对象深拷贝的相关文章

对象深拷贝

//对象深拷贝 var deepCopy= function(source) { var result={}; for (var key in source) { result[key] = typeof source[key]==='object'? deepCopy(source[key]): source[key]; } return result; } var newobj = deepCopy(obj); console.log(newobj);

javascript 对象深拷贝

javascript  中对象深拷贝 在看到jq.extend 时发现javascript 中的深拷贝,一直没有详细了解深拷贝怎么实现的. 1 var isType = function(obj, type){ 2 var toString = Object.prototype.toString, undefined; 3 return (obj === null && type === "Null") || (obj === undefined &&

js对象深拷贝

由于引用类型(数组.对象)是按地址传递,直接拷贝是浅拷贝,即修改拷贝后的变量,原变量也会改变.有时需要深拷贝一个对象,这时就需要遍历彻底复制,使原对象和拷贝对象完全脱离关系. 代码: function deepCloneObj(obj){ var i; var o = Array.isArray(obj) ? [] : {}; for(i in obj){ if(obj.hasOwnProperty(i)){ o[i] = typeof obj[i] === "Object"? dee

【转】.NET IL实现对象深拷贝

对于深拷贝,通常的方法是将对象进行序列化,然后再反序化成为另一个对象.例如在stackoverflow上有这样的解决办法:https://stackoverflow.com/questions/78536/deep-cloning-objects/78612#78612.这种序列化的方式,对深拷贝来讲,无疑是一个性能杀手. 今天大家介绍一个深拷贝的框架 DeepCopy,github地址:https://github.com/ReubenBond/DeepCopy,它是从orleans框架改编过

js对象深拷贝浅拷贝

对象的深拷贝于浅拷贝 对于基本类型,浅拷贝过程就是对值的复制,这个过程会开辟出一个新的内存空间,将值复制到新的内存空间.而对于引用类型来书,浅拷贝过程就是对指针的复制,这个过程并没有开辟新的堆内存空间,只是将指向该内存的地址进行了复制.然而对引用类型的浅拷贝会出现一个问题,那就是修改其中一个对象的属性,则另一个对象的属性也会改变.产生了问题那必然有相对解决的方法, 就这样深拷贝就开始入场了,深拷贝会开辟新的栈,两个对象对应两个不同的地址,这样一来,改一个对象的属性,也不会改变另一个对象的属性.

JavaScript递归简单实现个对象深拷贝

JavaScript中对象的深拷贝来说一直都算比较恶心 毕竟没有什么api能直接全拷贝了 得自己便利写  最近在项目中需要深拷贝 自己简单封了个方法 话不多说 直接上码 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="widt

最高效率的对象深拷贝通用方法

using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Text; namespace Care.Common {     public static class ObjectCopy     {         struct Identity         {          

java 对象深拷贝工具

来自: http://www.cnblogs.com/DreamDrive/p/5430981.html 需要对象实现Serializable接口 public class CloneUtils { // 拷贝一个对象 @SuppressWarnings("unchecked") public static <T extends Serializable>  T clone(T obj) { // 拷贝产生的对象 T clonedObj = null; try { // 读

js 对象深拷贝

/* *p需要拷贝的对象 * */ var deepCopy=function(p, c) { var c = c || {}; for (var i in p) { if (typeof p[i] === 'object') { c[i] = (p[i].constructor === Array) ? [] : {}; deepCopy(p[i], c[i]); } else { c[i] = p[i]; } } return c; }