浅谈.Net中的浅拷贝和深拷贝


本文摘自PHP中文网,作者青灯夜游,侵删。

对象复制是将数据对象的属性复制到同一数据类型的另一个对象的过程。在.Net浅拷贝和深拷贝是用于在对象之间复制数据的。下面本篇文章就来带大家简单认识一下.Net中浅拷贝和深拷贝,希望对大家有所帮助。

什么是浅拷贝?

浅拷贝会创建一个新对象,然后将当前对象的非静态字段复制到新对象。如果该字段是值类型,则执行该字段的逐位复制。如果该字段是引用类型,则复制唯一的引用,但不复制引用的对象本身;因此原始和克隆引用相同的对象。【视频教程推荐:ASP.NET教程】

对象的浅表副本是一个新对象,其实例变量与旧对象相同。在.Net浅拷贝是由对象方法MemberwiseClone()完成的。

如果你有一个带有值的对象,并且你想在同一类型的另一个变量中创建该对象的副本,那么你可以使用浅拷贝,所有属于值类型的属性值都将被复制,但如果你如果具有引用类型的属性,则不会复制此实例,而只会引用该实例。

什么是深拷贝?

深拷贝是创建一个新对象,然后将当前对象的字段复制到新创建的对象,以创建内部引用类型的完整副本的过程。如果字段是值类型,则执行字段的逐位复制。如果字段是引用类型,则执行引用对象的新副本。

对象的深层副本是具有全新实例变量的新对象,它不与旧对象共享对象。执行Deep Copy时,要克隆的类必须标记为[Serializable]。

深层复制旨在复制对象的所有元素,包括直接引用的值类型元素和引用类型的间接引用元素,引用类型包含对包含数据而不是包含数据本身的内存位置的引用。

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

以上就是浅谈.Net中的浅拷贝和深拷贝的详细内容!

相关阅读 >>

关于.net后台定时服务框架的简单介绍

c#中序列化实现深拷贝和datagridview初始化刷新的方法介绍

c#开发中遇到的问题分享

c#编写windows服务程序的图文详解

.net core + angular cli 实现开发环境搭建

c#开发微信门户及应用(二)之微信消息处理和应答的图文代码教程

c#如何实现json与对象之间互相转换功能示例

c#和.net是一个东西吗?c#与.net的区别与联系

mes溯源方案追溯系统开发

.net 打开文件

更多相关阅读请进入《.net》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...