首页 >后端开发 >C++ >如何在 C# 中深度复制列表以避免共享引用?

如何在 C# 中深度复制列表以避免共享引用?

Patricia Arquette
Patricia Arquette原创
2025-01-11 18:26:46372浏览

How to Deep Copy a List in C# to Avoid Shared References?

创建 C# 列表的真正深层副本

挑战

在 C# 中简单地使用 new List<Book>(books_1) 克隆 List<T> 并不能创建完全独立的副本。 对克隆列表的更改也会影响原始列表,因为它们共享对底层对象的引用。

解决方案:深度复制方法

要实现真正的深层复制,确保对克隆列表的修改不会影响原始列表,请使用以下技术:

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

此代码迭代原始列表 (Book) 中的每个 books_1 对象。对于每个对象,它使用构造函数创建一个 new Book 对象(此处隐含,假设 Book 有一个以 title 作为参数的构造函数)。 然后,这些新创建的 Book 对象将添加到新列表 (books_2)。 这保证了 books_2 包含来自 books_1.

的数据的完全独立的副本

以上是如何在 C# 中深度复制列表以避免共享引用?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn