gpt4 book ai didi

c# - 为什么这个对象在浅拷贝后不为空?

转载 作者:行者123 更新时间:2023-11-30 19:01:22 24 4
gpt4 key购买 nike

下面是我给客户的配偶副本(都是相同的对象类型)。然后将 Spouse 设置为 null。

client = spouse; // Copying data
spouse = null;

然后我暂停(在不同的行上使用断点)并检查客户和配偶的内存。配偶为空,但客户不是。

client 不应该为空,因为它的内存是浅拷贝的结果吗?

干杯

最佳答案

您的配偶住在芝麻街 123 号。

您在一张纸上写下:配偶:芝麻街 123 号。

现在你在另一张纸上写下:客户:。然后在第一张纸上抄写 SPOUSE 之后的内容。

现在你有两张纸。其中一个写着“配偶:芝麻街 123 号”。另一个写着“客户:芝麻街 123 号”。

现在您删除页面上写着 SPOUSE 的地址。

写着 CLIENT 的页面现在说什么?


您在选择行话时很明显感到困惑。

不要说“做一个浅拷贝”。说“复制引用”,因为这就是你正在做的。 “浅”是相对的,不说相对于什么。说明实际情况:正在复制值,该值是一个引用

不要说“这个对象是空的”。这就像在说“我车道上的那辆车不在那里”;这是荒谬的。 变量 可以包含 空引用。 引用 可以是空引用;它是指没有对象的引用。但它不是一个对象;它是缺少对象。

当您使您的语言精确时,这些混淆就会开始迅速消失。

关于c# - 为什么这个对象在浅拷贝后不为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34781650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com