当前位置:实例文章 » C#开发实例» [文章]面试官:深拷贝与浅拷贝有啥区别?

面试官:深拷贝与浅拷贝有啥区别?

发布人:shili8 发布时间:2023-12-06 09:34 阅读次数:44

面试官:深拷贝与浅拷贝有啥区别?

面试官:你知道深拷贝和浅拷贝有什么区别吗?

面试者:当然知道了。深拷贝和浅拷贝都是在复制对象时使用的概念。浅拷贝只是复制了对象的引用,而深拷贝则是复制了对象的所有内容。

面试官:能给我举个例子吗?

面试者:当然可以。我们来看一下下面这段代码:

import copy

# 定义一个列表
original_list = [1 2 [3 4]]

# 浅拷贝
shallow_copy = copy.copy(original_list)

# 深拷贝
deep_copy = copy.deepcopy(original_list)

# 修改原始列表的第一个元素
original_list[0] = 5

# 修改原始列表中的嵌套列表的第一个元素
original_list[2][0] = 6

print(original_list)  # 输出:[5 2 [6 4]]
print(shallow_copy)   # 输出:[1 2 [6 4]]
print(deep_copy)      # 输出:[1 2 [3 4]]


面试者:在这段代码中,我们首先定义了一个原始列表`original_list`,其中包含了一个嵌套列表。然后我们使用`copy.copy()`进行浅拷贝和`copy.deepcopy()`进行深拷贝。接着我们修改了原始列表的第一个元素和嵌套列表的第一个元素,然后分别输出了原始列表、浅拷贝和深拷贝的内容。

面试官:那么根据你的代码示例,可以看出浅拷贝只是复制了对象的引用,所以当原始列表发生变化时,浅拷贝也会跟着变化。而深拷贝则是复制了对象的所有内容,所以即使原始列表发生变化,深拷贝也不会受到影响。对吧?

面试者:是的,您说的完全正确。深拷贝会复制对象的所有内容,包括嵌套对象,而浅拷贝只是复制了对象的引用,所以当原始对象发生变化时,浅拷贝也会跟着变化。

面试官:非常好,你对深拷贝和浅拷贝的理解很清晰。谢谢你的回答。

面试者:不客气,谢谢您的提问。

相关标签:jvmc#java开发语言
其他信息

其他资源

Top