龙空技术网

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

IT生涯 118

前言:

如今小伙伴们对“net深复制”大致比较注重,你们都想要分析一些“net深复制”的相关知识。那么小编也在网上收集了一些对于“net深复制””的相关文章,希望咱们能喜欢,大家一起来了解一下吧!

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

什么是浅拷贝?

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

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

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

什么是深拷贝?

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

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

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

标签: #net深复制