Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Membuat Salinan Dalam Senarai dalam C#?

Bagaimana untuk Membuat Salinan Dalam Senarai dalam C#?

Patricia Arquette
Patricia Arquetteasal
2025-01-11 18:36:42442semak imbas

How to Create a Deep Copy of a List in 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!

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