博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深拷贝于浅拷贝
阅读量:4648 次
发布时间:2019-06-09

本文共 1141 字,大约阅读时间需要 3 分钟。

为对象创建副本的技术成为拷贝(也叫克隆)。我们将拷贝分为浅拷贝和深拷贝。

1.浅拷贝:将对象的所有字段赋值到新的对象(副本)中。其中,值类型字段的值北复制到副本中后,在副本中的修改不会影响到源对象对应的值。而应用类型的字段被复制到副本中的是引用对象,在副本中对引用类型的字段值做修改会影响到源对象本身。

2.沈拷贝:同样,将对象中的所有字段复制到新的对象中。不过,无论是对象的值类型字段,还是引用类型字段,都会被重新创建病赋值,对于副本的修改,不会影响到源对象本身。

3.例子:

class Person : ICloneable    {        public string name;        public int age;        public Department department;        //浅拷贝        public Person ShallowClone()        {            return ShallowClone() as Person;        }        //深拷贝        public Person DeepClone()        {            using(Stream objStream = new MemoryStream()){                IFormatter formatter = new BinaryFormatter();                formatter.Serialize(objStream, this);                objStream.Seek(0, SeekOrigin.Begin);                return formatter.Deserialize(objStream) as Person;            }        }        public override string ToString()        {            return "姓名:" + this.name + ",年龄:" + this.age.ToString() + ",部门:" + this.department.name;        }        public object Clone()        {            return this.MemberwiseClone();        }    }

 

转载于:https://www.cnblogs.com/caoguodong/p/5752162.html

你可能感兴趣的文章
结构体的传参理解成员的存储方式
查看>>
python 进程与线程(理论部分)
查看>>
什么是API
查看>>
Java反射中method.isBridge() 桥接方法
查看>>
[shiro学习笔记]第二节 shiro与web融合实现一个简单的授权认证
查看>>
强名称程序集(strong name assembly)——为程序集赋予强名称
查看>>
1028. List Sorting (25)
查看>>
BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划
查看>>
ubuntu 重启命令,ubuntu 重启网卡方法
查看>>
Linux的学习:
查看>>
JavaScript中的原型继承原理
查看>>
Python logger模块
查看>>
jquery控制css的display(控制元素的显示与隐藏)
查看>>
关于python做人工智能的一个网页(很牛逼)
查看>>
判断控件的CGRect是否重合,获取控件的最大XY值
查看>>
POJ-1128 Frame Stacking
查看>>
浏览器调试淘宝首页看到有趣的招聘信息
查看>>
ASP.NET Identity “角色-权限”管理 4
查看>>
[转][译]ASP.NET MVC 4 移动特性
查看>>
SurfaceView+MediaPlay的bug们
查看>>