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


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

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

什么是浅拷贝?

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

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

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

什么是深拷贝?

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

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

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

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

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

相关阅读 >>

c#简单工厂模式是什么?

c#中在构造函数中访问虚成员有什么问题?

c# 定时器timer的实例介绍

.net core如何在新的项目系统中(.csproj)发布可执行文件

c#串口通信的实例教程

比较.net中接口与类的区别

c#中ini配置文件的图文代码详解

c#如何计算传入的时间距离今天的时间差的实例分享

.net安装framework出现报错的处理教程

比较c#中值类型和引用类型的区别

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




打赏

取消

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

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

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

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

评论

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