Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mencipta Salinan Benar Dalam Senarai C#?

Bagaimana untuk Mencipta Salinan Benar Dalam Senarai C#?

Patricia Arquette
Patricia Arquetteasal
2025-01-11 18:47:43163semak imbas

How to Create a True Deep Copy of a C# List?

Kaedah salinan dalam yang benar untuk mencipta Senarai

Pengenalan

Dalam banyak senario pengaturcaraan, adalah penting untuk mencipta salinan yang benar-benar bebas bagi struktur data asal. Untuk Senarai dalam C#, adalah penting untuk memahami cara melaksanakan salinan dalam.

Soalan

Pertimbangkan coretan kod berikut:

<code class="language-csharp">List<Book> books_1 = new List<Book>();
books_1.Add(new Book("One"));
books_1.Add(new Book("Two"));
books_1.Add(new Book("Three"));
books_1.Add(new Book("Four"));

List<Book> books_2 = new List<Book>(books_1);

books_2[0].title = "Five";
books_2[1].title = "Six";

// 对books_2的更改会反映在books_1中
textBox1.Text = books_1[0].title;
textBox2.Text = books_1[1].title;</code>

Walaupun kod ini mencipta senarai baharu, objek Buku dalam books_2 masih merujuk kepada objek yang sama dalam books_1. Oleh itu, pengubahsuaian pada books_2 akan mempengaruhi books_1.

Penyelesaian

Untuk membuat salinan dalam sebenar Senarai, setiap elemen senarai asal mesti disalin. Ini boleh dicapai menggunakan kod berikut:

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

Setiap objek Buku dalam books_1 ditukar menjadi objek Buku baharu dengan menggunakan kaedah Pilih LINQ. Objek baharu ini kemudiannya disimpan dalam books_2, menghasilkan salinan yang dalam.

Sebagai alternatif, anda boleh mengambil pendekatan yang lebih mudah menggunakan kaedah ConvertAll List:

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

Kaedah ini mengembalikan senarai baharu di mana setiap elemen adalah hasil daripada mengubah elemen yang sepadan dalam senarai asal.

Dengan pendekatan ini, books_2 dan books_1 adalah bebas antara satu sama lain, dan perubahan pada satu senarai tidak akan menjejaskan senarai yang lain.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Salinan Benar Dalam Senarai C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn