Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Membuat Salinan Dalam Senarai dalam C#?
Senarai Penyalinan Dalam dalam C#
Menetapkan senarai secara langsung dalam C# (cth., List<T> list2 = list1;
) atau menggunakan List<T> list2 = new List<T>(list1);
mencipta salinan cetek. Pengubahsuaian pada satu senarai mempengaruhi yang lain kerana ia berkongsi objek asas yang sama. Untuk mencipta salinan dalam yang benar, di mana perubahan pada satu senarai adalah bebas daripada yang lain, anda perlu menduplikasi objek yang terkandung. Begini caranya:
Kaedah 1: Menggunakan LINQ (Disyorkan)
Pendekatan yang paling ringkas dan cekap menggunakan kaedah Select
LINQ untuk mencipta kejadian baharu setiap objek dalam senarai:
<code class="language-csharp">List<Book> books_2 = books_1.Select(book => new Book(book.title)).ToList();</code>
Baris ini berulang melalui books_1
, mencipta objek Book
baharu untuk setiap elemen menggunakan title
sedia ada (dengan mengandaikan kelas Book
anda mempunyai pembina yang mengambil tajuk), dan kemudian menukar jujukan yang terhasil kembali menjadi List<Book>
baharu.
Kaedah 2: Menggunakan ConvertAll
(Alternatif)
Kaedah ConvertAll
menawarkan sintaks yang lebih mudah sedikit untuk hasil yang sama:
<code class="language-csharp">List<Book> books_2 = books_1.ConvertAll(book => new Book(book.title));</code>
Ini mencapai salinan dalam yang sama seperti pendekatan LINQ. Pilih mana-mana kaedah yang anda rasa lebih mudah dibaca.
Kedua-dua kaedah memastikan bahawa books_2
ialah salinan mendalam books_1
yang bebas sepenuhnya. Sebarang perubahan yang dibuat pada mana-mana senarai tidak akan menjejaskan senarai yang lain. Ingat bahawa ini menganggap kelas Book
anda (atau apa sahaja jenis senarai anda) mempunyai pembina yang sesuai untuk memudahkan penciptaan kejadian baharu. Jika kelas Book
anda mempunyai lebih banyak sifat, anda perlu memasukkannya dalam panggilan pembina new Book(...)
dengan sewajarnya.
Atas ialah kandungan terperinci Bagaimana untuk Membuat Salinan Dalam Senarai dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!