[转载]C#深拷贝的方法
首先了解下深拷贝和浅拷贝的定义:
浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用.
深拷贝(深度克隆):不紧复制对象的基本类,同时也复制原对象中的对象.就是说完全是新对象产生的.
在C#中,复制一个基本类型,是全盘复制的。而对于引用类型,只是复制一个引用指针。所以在对其进行深拷贝也是比较麻烦的,要实现ICloneable接口的Clone方法。
当然也有其他比较快的方法,下面这个是在网上找到的代码。只需要将一个对象序列化为binary stream,然后再将它反序列化为新的对象,就能实现深拷贝。代码如下:
public static T CloneOf<T>(T serializableObject){object objCopy = null;MemoryStream stream = new MemoryStream();BinaryFormatter binFormatter = new BinaryFormatter();binFormatter.Serialize(stream, serializableObject);stream.Position = 0;objCopy = (T) binFormatter.Deserialize(stream);stream.Close();return (T) objCopy;}
转载:http://www.lwolf.cn/blog/article/code/csharp-deep-copy.htm
[转载]C#深拷贝的方法相关推荐
- JS中浅拷贝和深拷贝的使用,深拷贝实现方法总结
1.浅拷贝:两个对象经过拷贝后虽然具有相同的属性,但是他们都指向同一个内存空间.操作会引起引用,同一地址的变量一起改变. let a = {x: 1} let b = a b.x = 2 consol ...
- JavaScript深拷贝的方法
一.深拷贝和浅拷贝 基本数据类型: 字符串(string).数值(number).布尔值(boolean).undefined.null : 引用数据类型: 对象(Object).数组(Array). ...
- 4种JavaScript深拷贝的方法
浅拷贝与深拷贝 浅拷贝是创建一个新对象,这个对象有着原始对象属性值的拷贝.如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的是内存地址 . 如果不进行深拷贝,其中一个对象改变了对象 ...
- js数组中深拷贝的方法
一.什么是浅拷贝 在js当中,我们常常遇到数组复制的的情况,许多人一般都会使用"="来直接把一个数组赋值给一个变量,如 1 var a=[1,2,3]; 2 var b=a; 3 ...
- JS--对象数组深拷贝的方法
原文网址:JS--对象数组深拷贝的方法_IT利刃出鞘的博客-CSDN博客 简介 本文用示例介绍JavaScript对象数组深拷贝的方法. 问题描述 对于普通数组(数组元素为数字或者字符串),深拷贝很简 ...
- assign深拷贝_经典前端面试题: Object.assign 是浅拷贝还是深拷贝?实现深拷贝的方法有哪些?...
Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. 如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖.后面的源对象的属性将类 ...
- 【转载】关于对方法实例化的相关感悟以及unity的50个技巧
关于实例化问题的感悟(笔者自悟,大神勿喷) 在之前的程序编写过程中,虽然对相关的方法进行了实例化,但是在运行的时候总是会出现"未将对象引用设置到对象的实例",出现该种问题的原因是由 ...
- [转载]一个Spectral Clustering方法的小结
什么叫SpectralAlgorithm?;广义上来说,任何在演算法中用到SVD/特征值分解的,都叫SpectralAlgorithm.从很老很老的PCA/LDA,到比较近的SpectralEmbed ...
- CSDN转载博客的方法
前言 对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间 ...
最新文章
- Caffe中对MNIST执行train操作执行流程解析
- 回顾 | 2018年十大AI新闻 中国继续占据主导优势
- matlab hist函数_算法工匠MATLAB专训营:Matlab绘图,小试牛刀
- 数论 欧几里得与扩展欧几里得
- 高性能mysql 第10章 复制
- 清新手绘水果平面设计|面膜的包装设计越来越精致了!
- ubuntu 16.04安装网易云音乐
- 今天谈谈COLING2018计算语言学进展
- CCIE试验备考之交换VLAN间路由
- 数据库自学-SQL-四大SQL语句DDL、DML、DQL、DCL
- 重新学习《C++Primer5》第16章-模板与泛型编程
- python docx删除word段落
- linux学校_济南教师招聘 |济南市益友培训学校7大岗位教师招聘(月薪4k15k、包住)...
- ui设计移动端字体适配_移动端界面设计之尺寸篇
- ps 简单的抠图操作
- CentOS7 DM-Multipath+HUAWEI OceanStor存储多路径配置
- 电商类-仿美团页面demo
- Android 关于佳博和汉印蓝牙热敏打印机开发,android面试必看书籍
- 第一次作业:我和计算机
- 下载微软虚拟学院视频字幕,解决本地播放没有字幕
热门文章
- 简单的二维数组问题,不用不知道,一用吓一跳
- 《那些年啊,那些事——一个程序员的奋斗史》——81
- python对sqlite增删改查_Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】...
- mysql2表连接优化性能_MySQL性能优化方法二:表结构优化
- jquery pager 访问 java_基于JQuery的Pager分页器实现代码
- 二进制安装mysql集群_实战mysql集群搭建(一)--centos7下二进制安装mysql-5.6
- ajax查询功能查询源码,ajax实现分页查询功能
- java 静态方法 变量_Java变量的初始化及静态方法的实现
- Python-Matplotlib可视化(4)——添加注释让统计图通俗易懂
- scala unix时间戳_下载,在Linux,Unix,Windows上安装Scala