解决方法
你应该区分两种副本:浅和深.
深拷贝为整个数组及其所有内容分配新空间(如果它包含引用,则分配新空间以创建具有相同值的复制的实例),浅拷贝只分配与复制的相同大小的空间阵列.
例:
数组A已被分配为仅包含两个mutable objects(例如:列表或arraylist).
您是否只想拥有“extern”数组(包含两个引用的数组)的副本,或者您是否需要深层副本,它还将分配A中包含的两个引用的新实例?
在第一种情况下,例如:
A是从参考0x0000AA开始的数组
ElementOne从0x00BBCC开始
ElementTwo从0x00BBFF开始
如果执行浅拷贝:
B(新数组)将从引用0x0000BB开始,
ElementsOne和ElementsTwo将指向旧引用(0x00BBCC,0x00BBFF).
如果执行深层复制,它不仅会为数组分配新空间,而且还会分配空间来包含新实例(新列表,新的arraylist ……).
原文地址:https://www.jb51.cc/csharp/100782.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。