Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mencipta Salinan Benar Dalam Senarai C#?
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
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
<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!