在 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中文网其他相关文章!