Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mencipta Salinan Dalam Senarai untuk Kebebasan Objek Sebenar?

Bagaimana untuk Mencipta Salinan Dalam Senarai untuk Kebebasan Objek Sebenar?

Patricia Arquette
Lepaskan: 2025-01-11 18:32:44
asal
138 orang telah melayarinya

How to Create Deep Copies of List for True Object Independence?

Mencapai Kebebasan Objek Sebenar dengan Salinan Senarai Dalam

Kod contoh menunjukkan dua senarai (List<Book> books_1 dan List<Book> books_2) yang mengandungi Book objek. Tugasan mudah menjadikan books_2 kelihatan seperti salinan books_1, tetapi perubahan kepada books_2 turut mempengaruhi books_1 kerana mereka berkongsi rujukan kepada objek Book yang sama.

Kepentingan Pengklonan Dalam

Untuk membuat salinan yang benar-benar bebas, kita mesti mengelakkan rujukan yang dikongsi. Ini memerlukan mencipta objek Book yang baharu sepenuhnya dan mengisinya dengan data daripada yang asal – satu proses yang dipanggil penyalinan dalam.

Melaksanakan Penyalinan Dalam

Salinan dalam boleh dibuat dengan cekap menggunakan ungkapan lambda dengan sama ada kaedah Select atau ConvertAll:

Menggunakan Select:

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

Menggunakan ConvertAll:

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

Kedua-dua pendekatan menjana kejadian Book baharu dalam ungkapan lambda, menyalin sifat title daripada objek Book asal. Senarai books_2 yang terhasil mengandungi objek Book bebas sepenuhnya.

Kelebihan Penyalinan Dalam

Penyalinan mendalam memastikan pengubahsuaian kepada books_2 tidak akan menjejaskan books_1. Ini penting apabila anda perlu bekerja dengan salinan yang diubah suai tanpa mengubah data asal. Pendekatan ini menjamin integriti data dan mengelakkan kesan sampingan yang tidak diingini.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan