利用二进制序列化的方式进行深拷贝  有一个缺陷 序列化的类型必须标识为刻序列化的[Serializable] 否则无法进行二进制序列化

class Program{static void Main(string[] args){Person P = new Person("小丽",20);Person N = (Person)DeepCopy(P);P.Grade = 200;Console.WriteLine(N.Grade.ToString());Console.ReadKey();}/// <summary>/// 利用序列化实现深拷贝/// </summary>/// <param name="_obj"></param>/// <returns></returns>static object DeepCopy(object _obj){BinaryFormatter BF2 = new BinaryFormatter();using (MemoryStream stream = new MemoryStream()){BF2.Serialize(stream,_obj);stream.Position = 0;return BF2.Deserialize(stream);}}}[Serializable]class Person{private string mName;private int mGrade;public int Grade{get { return mGrade; }set { mGrade = value; }}public string Name{get { return mName; }set { mName = value; }}public Person(string _Name, int _Grade){mName = _Name;mGrade = _Grade;}public Person(){}}

摘自csdn-hzq354242

转载于:https://www.cnblogs.com/zhaochenxi/p/8478533.html

C#通过序列化实现深表复制相关推荐

  1. 深复制VS浅复制(MemberwiseClone方法介绍)

    MemberwiseClone方法,属于命名空间System,存在于程序集 mscorlib.dll中.返回值是System.Object.其含义是:创建一个当前object对象的浅表副本. MSDN ...

  2. JAVA 对象深度复制实现

    JAVA 有两种深度复制实现方式,分别是实现Cloneabel接口,并在接口函数中为每个属性调用Cloneable,也可以通过序列化的方式来实现. package JAVAImprove;import ...

  3. 创建对象和对象的复制

    1.创建对象 通过 new关键字 通过反射机制( 调用Java.lang.Class或java.lang.reflect.Constructor类的newInstance()方法) // 1. 使用C ...

  4. clone是深拷贝还是浅拷贝_Cloneable接口的作用与探索理解浅拷贝与深拷贝

    导读:本文将主要讨论设计模式--原型模式中,关于cloneable接口及浅拷贝与深拷贝的概念. 原型模式的理解 关于原型模式的理解,我在网上发现一个有趣且助于理解原型模式的例子在这里分享一下:火影忍者 ...

  5. 深拷贝(deep clone)与浅拷贝(shallow clone)

    深拷贝(deep clone)与浅拷贝(shallow clone) 浅复制(浅克隆):被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复 ...

  6. IdentityHash as hashMap

    2019独角兽企业重金招聘Python工程师标准>>> IdentityHash as hashMap 博客分类: java public class IdentityHashMap ...

  7. c++ main函数调用 类中的枚举_为啥用枚举,枚举有哪些用法?

    Java基础:枚举的用法与原理 在学习过程中,我们也只是在定义常量的时候,会意识到枚举的存在,而定义常量其实可以在类中实现,这时就会感觉枚举有点鸡肋.但在实际项目开发的过程中,枚举因相当迷人的特性而受 ...

  8. java 深克隆_Java实现深克隆的两种方式

    序列化和依次克隆各个可变的引用类型都可以实现深克隆,但是序列化的效率并不理想 下面是两种实现深克隆的实例,并且测试类对两种方法进行了对比: 1.重写clone方法使用父类中的clone()方法实现深克 ...

  9. Java每天10道面试题,跟我走,offer有!(七)

    2019独角兽企业重金招聘Python工程师标准>>> 61.什么是并发修改异常? 什么是并发修改异常: 当我们在遍历实现了collection接口 与iterator接口的集合时( ...

最新文章

  1. 服务器开发修改用户密码功能,更改服务器用户密码
  2. python3项目-python3项目
  3. 转载:页面加载swf插件:swfobject
  4. eclipse:解决修改文件需要重启tomcat问题
  5. 计算机基础 课程简介,课程简介及计算机基础知识课件.ppt
  6. Codeforces 1144D Deduction Queries 并查集
  7. Python获取电脑硬件信息及状态的实现方法
  8. Oracle IMPDP导入数据案例之注意事项(undo/temp)
  9. 模板匹配中差值的平方和(SSD)与互相关准则的关系
  10. 充满艺术范儿!艺术感在线的界面欣赏
  11. 【当贝市场】智能电视语音识别功能泄露隐私?
  12. 数据结构学习记录连载1
  13. 马斯克再次创造历史!三位太空游客坐五手火箭成功升空,今晚达到空间站,票价3.5亿...
  14. 5G网络切片技术解析,一文让你读懂5G切片
  15. crispr基因编辑_用CRISPR编程基因组
  16. SBC音频编解码算法(转载)
  17. 介绍几个免费的英文ASP.NET的CMS程序
  18. Keras中那些学习率衰减策略
  19. 在mysql中创建用户并授权
  20. 胡子决定编程语言运势

热门文章

  1. Golang教程:(十五)指针
  2. iOS - UIView属性hidden, opaque, alpha, opacity的区别
  3. cad线性标注命令_CAD的标注命令原来可以这样用,学了十几年,终于知道了
  4. java was datasource_mybatis默认的数据源连接池(PooledDataSource和UnPooledDataSource)
  5. [Ext JS 4] 实战之 Picker 和 Picker Field
  6. vb 6.0 获取重定向的url_免费CloudFlare CDN真香,个人站点加速+Https证书+重定向
  7. mysql ( )=,(mysql)
  8. strchr和strstr函数
  9. 在c++语言中赋值运算符,C++语言— 类中的赋值运算符重载
  10. Base64与文件(docx)流的加密和解密