首页 > 后端开发 > C++ > 如何创建列表的深层副本以实现真正的对象独立性?

如何创建列表的深层副本以实现真正的对象独立性?

Patricia Arquette
发布: 2025-01-11 18:32:44
原创
138 人浏览过

How to Create Deep Copies of List for True Object Independence?

通过列表的深层副本实现真正的对象独立性

示例代码显示了两个包含 List<Book> books_1 对象的列表(List<Book> books_2Book)。 简单的赋值使 books_2 看起来是 books_1 的副本,但对 books_2 的更改也会影响 books_1,因为它们共享对相同 Book 对象的引用。

深度克隆的重要性

要创建真正独立的副本,我们必须避免共享引用。 这需要创建全新的Book对象并用原始数据填充它们——这个过程称为深度复制。

实现深度复制

可以使用带有 SelectConvertAll 方法的 lambda 表达式高效地创建深拷贝:

使用Select

<code class="language-csharp">List<Book> books_2 = books_1.Select(book => new Book(book.title)).ToList();</code>
登录后复制

使用ConvertAll

<code class="language-csharp">List<Book> books_2 = books_1.ConvertAll(book => new Book(book.title));</code>
登录后复制

两种方法都会在 lambda 表达式中生成新的 Book 实例,从原始 title 对象复制 Book 属性。 生成的 books_2 列表包含全新的、独立的 Book 对象。

深度复制的优点

深度复制可确保对 books_2 的修改不会影响 books_1。当您需要使用修改后的副本而不更改原始数据时,这一点至关重要。 这种方法保证了数据完整性并防止意外的副作用。

以上是如何创建列表的深层副本以实现真正的对象独立性?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板