首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 数据库 第二书店 程序员

c#深拷贝与浅拷贝 - xiaolei1982收藏 - CSDNBlog


首先介绍一下:
C#中有两种类型变量,一种 是值类型变量,一种是引用类型变量。对于前者,copy是属于全盘复制;而对于后者,一般的copy只是浅copy,相当于只传递一个引用指针一样。因此 对于后者进行真正copy的时候,也是最费事的,具体的说,必须为其实现ICloneable接口中提供的Clone方法。

浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用.
深拷贝(深度克隆):不紧复制对象的基本类,同时也复制原对象中的对象.就是说完全是新对象产生的.

浅 拷贝和深拷贝之间的区别:浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复制它的一个引用到目标对象。如果改变目标对象 中引用型字段的值他将反映在原是对象中,也就是说原始对象中对应的字段也会发生变化。深拷贝与浅拷贝不同的是对于引用的处理,深拷贝将会在新对象中创建一 个新的和原是对象中对应字段相同(内容相同)的字段,也就是说这个引用和原是对象的引用是不同的,我们在改变新对象中的这个字段的时候是不会影响到原始对 象中对应字段的内容。所以对于原型模式也有不同的两种处理方法:对象的浅拷贝和深拷贝。

MemberwiseClone 方法创建一个浅表副本,方法是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。如果字段是值类型的,则对该字段执行逐位复制。如果字段是引用 类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。深拷贝,即实现ICloneable接口.ICloneable可用于深拷贝 和浅拷贝。%Á÷ajØ7NKwww.pin5i.com6̎~ÜK-H}c
这些都是概念,但是需要我们理解,下面介绍实例:



他们设置了哪些标签:


? 001 C# c#深拷贝与浅拷贝 深拷贝和浅拷贝

谁收藏了这个网址:


only_endure收录

使用标签:c#,时间:2008-4-2 20:43:23 | 相关网摘

hyzshua1230收录

使用标签:c#, 深拷贝和浅拷贝,时间:2008-4-3 8:41:44 | 相关网摘

首先介绍一下:
C#中有两种类型变量,一种 是值类型变量,一种是引用类型变量。对于前者,copy是属于全盘复制;而对于后者,一般的copy只是浅copy,相当于只传递一个引用指针一样。因此 对于后者进行真正copy的时候,也是最费事的,具体的说,必须为其实现ICloneable接口中提供的Clone方法。

浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用.
深拷贝(深度克隆):不紧复制对象的基本类,同时也复制原对象中的对象.就是说完全是新对象产生的.

浅 拷贝和深拷贝之间的区别:浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复制它的一个引用到目标对象。如果改变目标对象 中引用型字段的值他将反映在原是对象中,也就是说原始对象中对应的字段也会发生变化。深拷贝与浅拷贝不同的是对于引用的处理,深拷贝将会在新对象中创建一 个新的和原是对象中对应字段相同(内容相同)的字段,也就是说这个引用和原是对象的引用是不同的,我们在改变新对象中的这个字段的时候是不会影响到原始对 象中对应字段的内容。所以对于原型模式也有不同的两种处理方法:对象的浅拷贝和深拷贝。

MemberwiseClone 方法创建一个浅表副本,方法是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。如果字段是值类型的,则对该字段执行逐位复制。如果字段是引用 类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。深拷贝,即实现ICloneable接口.ICloneable可用于深拷贝 和浅拷贝。%Á÷ajØ7NKwww.pin5i.com6̎~ÜK-H}c
这些都是概念,但是需要我们理解,下面介绍实例:

scz26收录

时间:2008-4-3 8:43:34 | 相关网摘

zhupafan收录

使用标签:c#深拷贝与浅拷贝,时间:2008-4-3 12:53:38 | 相关网摘

njchen收录

时间:2008-4-3 14:06:31 | 相关网摘

immcss收录

时间:2008-4-3 14:10:27 | 相关网摘

music0564收录

时间:2008-4-3 15:07:34 | 相关网摘

lwcheng1985收录

时间:2008-4-3 20:28:46 | 相关网摘

zbing0203收录

时间:2008-4-3 21:52:15 | 相关网摘

nevet收录

时间:2008-4-4 0:15:03 | 相关网摘

sweetcoffe收录

时间:2008-4-4 19:47:45 | 相关网摘

spy2008收录

时间:2008-4-5 9:12:03 | 相关网摘

Eleve收录

使用标签:c#深拷贝与浅拷贝,时间:2008-4-5 13:07:59 | 相关网摘

c#深拷贝与浅拷贝

salior2006收录

使用标签:001,时间:2008-4-5 21:22:59 | 相关网摘

orichisonic收录

时间:2008-4-6 9:30:21 | 相关网摘

liukai721收录

使用标签:C#,时间:2008-4-6 18:28:40 | 相关网摘

#中有两种类型变量,一种 是值类型变量,一种是引用类型变量

ranlianjie收录

时间:2008-4-9 12:49:10 | 相关网摘

xiaoC2007收录

使用标签:c#, 深拷贝和浅拷贝,时间:2008-5-9 16:41:04 | 相关网摘

首先介绍一下:
C#中有两种类型变量,一种 是值类型变量,一种是引用类型变量。对于前者,copy是属于全盘复制;而对于后者,一般的copy只是浅copy,相当于只传递一个引用指针一样。因此 对于后者进行真正copy的时候,也是最费事的,具体的说,必须为其实现ICloneable接口中提供的Clone方法。

浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用.
深拷贝(深度克隆):不紧复制对象的基本类,同时也复制原对象中的对象.就是说完全是新对象产生的.

浅 拷贝和深拷贝之间的区别:浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复制它的一个引用到目标对象。如果改变目标对象 中引用型字段的值他将反映在原是对象中,也就是说原始对象中对应的字段也会发生变化。深拷贝与浅拷贝不同的是对于引用的处理,深拷贝将会在新对象中创建一 个新的和原是对象中对应字段相同(内容相同)的字段,也就是说这个引用和原是对象的引用是不同的,我们在改变新对象中的这个字段的时候是不会影响到原始对 象中对应字段的内容。所以对于原型模式也有不同的两种处理方法:对象的浅拷贝和深拷贝。

MemberwiseClone 方法创建一个浅表副本,方法是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。如果字段是值类型的,则对该字段执行逐位复制。如果字段是引用 类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。深拷贝,即实现ICloneable接口.ICloneable可用于深拷贝 和浅拷贝。%Á÷ajØ7NKwww.pin5i.com6̎~ÜK-H}c
这些都是概念,但是需要我们理解,下面介绍实例:

madragon收录

时间:2008-5-15 20:55:17 | 相关网摘

ruoyee收录

使用标签:?,时间:2008-9-7 12:41:24 | 相关网摘

haiben080808收录

使用标签:c#,时间:2008-9-23 9:58:35 | 相关网摘


网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
Copyright © 2000-2008, CSDN.NET, All Rights Reserved