浅拷贝

作者: Lewis Jackson
创建日期: 8 可能 2021
更新日期: 25 六月 2024
Anonim
[程序员小飞]用最浅显的语言,深入理解深拷贝和浅拷贝的区别
视频: [程序员小飞]用最浅显的语言,深入理解深拷贝和浅拷贝的区别

内容

定义-浅拷贝是什么意思?

在C#中,浅表复制是通过实例化与原始对象相同类型的新实例并将对象的非静态成员复制到该克隆来创建对象的克隆的过程。值类型的成员一点一点地被复制,而引用类型的成员被复制,以使所引用的对象及其克隆引用相同的对象。


通常,当性能是要求之一,并且对象不会在整个应用程序中发生突变的情况下,将使用浅表复制。通过传递包含不可变数据的克隆,可以消除任何代码损坏的可能性。在对象引用允许对象通过内存地址传递的情况下,浅复制是有效的,因此不需要复制整个对象。

浅副本也称为成员副本。

Microsoft Azure和Microsoft Cloud简介在本指南中,您将了解什么是云计算,以及Microsoft Azure如何帮助您从云迁移和运行业务。

技术百科解释了浅拷贝

浅表复制与深表复制在对象的每个成员到另一个对象的分配中相似,但是在引用类型字段的复制方式上有所不同。与仅复制引用的浅表复制不同,在深表复制中,将创建所引用对象的新副本。

例如,考虑一个包含个人信息详细信息的雇员对象,其中包括存储多个雇员地址的地址对象列表。通过执行雇员对象的浅表副本,可以使用对原始雇员对象拥有的相同地址对象列表的引用来创建雇员对象的克隆。

执行浅表复制的方法包括:
  • 调用对象的MemberwiseClone方法
  • 通过繁琐但易于控制的自定义方法手动创建克隆
  • 使用反射技术提供自动工具来执行浅表复制,但会增加性能开销
  • 使用比反射慢但自动且简单的序列化方法
如果对象具有经常被修改的引用类型的成员,则不能使用浅表复制。 此定义是用C#编写的