c# 深拷贝各种实现方式
1:利用反射实现
public T DeepCopy<T>(T obj)
{
object retval= Activator.CreateInstance(typeof(T));
PropertyInfo[] pis = typeof(T).GetProperties();
foreach (PropertyInfo pi in pis)
{
try{pi.SetValue(retval, pi.GetValue(obj, null), null); }
catch{ }
}
return (T)retval;
}
2:利用xml序列化和反序列化实现
public T DeepCopy<T>(T obj)
{
object retval;
using (MemoryStream ms = new MemoryStream())
{
XmlSerializer xml = new XmlSerializer(typeof(T));
xml.Serialize(ms, obj);
ms.Seek(0, SeekOrigin.Begin);
retval = xml.Deserialize(ms);
ms.Close();
}
return (T)retval;
}
3:利用二进制序列化和反序列化实现
public static T DeepCopy<t>(T obj)
{
object retval;
using (MemoryStream ms = new MemoryStream())
{
BinaryFormatter bf = new BinaryFormatter();
//序列化成流
bf.Serialize(ms, obj);
ms.Seek(0, SeekOrigin.Begin);
//反序列化成对象
retval = bf.Deserialize(ms);
ms.Close();
}
return (T)retval;
}
4:利用silverlight DataContractSerializer实现,用于在silverlight 客户端使用
public static T DeepCopy<T>(T obj)
{
object retval;
using (MemoryStream ms = new MemoryStream())
{
DataContractSerializer ser = new DataContractSerializer(typeof(T));
ser.WriteObject(ms, obj);
ms.Seek(0, SeekOrigin.Begin);
retval = ser.ReadObject(ms);
ms.Close();
}
return (T)retval;
}
c# 深拷贝各种实现方式相关推荐
- JavaScript深拷贝之递归方式
使用递归的方式进行对象(数组)的深拷贝 观看更加
- java深拷贝的三种方式
问题:spring boot/JPA项目中,修改某个对象以后需要生成一个VO对象给客户端,数据库对应的POJO对象里有个Map类型的对象(名字叫para),这个对象的value又是个Map,我使用Ma ...
- 超级全面-深拷贝与浅拷贝的实现方式
一.数据类型: (1)基本数据类型:number,string,Boolean,null,undefined,symbol(ES6),BigInt(ES10): (2)引用数据类型:对象,数组,函数等 ...
- Java浅拷贝和深拷贝的方式
文章目录 1. 前言 2. 概念介绍 2.1 拷贝 / 克隆的概念 2.2 为什么需要拷贝方法? 2.3 什么是浅拷贝?浅拷贝和深拷贝的区别是什么? 3. 深拷贝的实现方式 3.1 手动深拷贝 3.2 ...
- clone是深拷贝还是浅拷贝_Cloneable接口的作用与探索理解浅拷贝与深拷贝
导读:本文将主要讨论设计模式--原型模式中,关于cloneable接口及浅拷贝与深拷贝的概念. 原型模式的理解 关于原型模式的理解,我在网上发现一个有趣且助于理解原型模式的例子在这里分享一下:火影忍者 ...
- JS的深拷贝和浅拷贝
今天,CVTE面试官问了深拷贝和浅拷贝的问题 我的回答是:浅拷贝是拷贝了对象的引用,当原对象发生变化的时候,拷贝对象也跟着变化:深拷贝是另外申请了一块内存,内容和原对象一样,更改原对象,拷贝对象不会发 ...
- 对深拷贝与浅拷贝的再次理解
对深拷贝与浅拷贝的再次理解 记得11年底找工作的时候,面试时曾经遇到有面试官问的对深拷贝与浅拷贝的理解,那时候自己回来查了资料,写了篇博客,感觉自己理解了,其实理解的不深刻,最近在调试bug的时候,再 ...
- Map的putAll方法踩坑实记(对象深拷贝浅拷贝)
文章目录 问题描述 编写测试代码模拟问题场景 场景1:Map中不包含对象 场景2:Map中包含对象 什么是对象的浅拷贝深拷贝 如何实现深拷贝 问题描述 在一个产品管理系统中,产品信息需要封装一份同步业 ...
- 深入浅出解释深拷贝、浅拷贝、对象拷贝、引用拷贝原理和应用
拷贝总体上分为引用拷贝和对象拷贝. 1. 引用拷贝 创建一个指向对象的引用变量的拷贝. public class QuoteCopy {public static void main(String[] ...
最新文章
- mysql servicebroker_阿里云Kubernetes服务 - Service Broker快速入门指南
- Java 8 - Stream流骚操作解读
- java自动递增前缀式和后缀式区别
- Spring Boot-@EnableWebMvc注解
- 每天一个 liunx 命令 ls
- lightoj 1031 区间dp
- python --- 二分查找算法
- 2019蓝桥杯省赛---java---B---2(不同子串)
- C语言十进制转二进制
- 第四次c语言实验报告模板,C语言实验报告模板.doc
- Scala之集合Collection
- BroadLeaf项目搜索功能改进
- Choosing Capital for Treeland codeforce 219-D
- arXiv 上传文章过程
- Oracle数据库下载与安装(Windows)
- php连接 mysql的三种连接方式
- Xms Xmx PermSize MaxPermSize 区别
- React-笔记整理
- 平面解析几何----双曲线的硬解公式
- 电磁场与仿真软件(21)
热门文章
- hyperion高光谱参数_[ENVI] 珠海一号高光谱数据处理
- php随机获取一行文本,一行PHP随机字符串生成器?
- 自动匹配未认领订单编号_海量订单系统微服务开发:使用MongoDB支持海量数据...
- 原生ajax如何执行,原生ajax调用数据实例讲解
- 计算机跨考医学检验技术,医学检验技术考研可以考哪些专业?
- 今天的编程语言是怎么来的?
- 二极管为什么单向导电?
- mysql 更新索引_MySQL索引优化
- Java表示0到200的质因数_java记——循环 求一个数的所有质因数
- data transformation python_Python 编码为什么那么蛋疼?