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>
Menggunakan ConvertAll
:
<code class="language-csharp">List<Book> books_2 = books_1.ConvertAll(book => new Book(book.title));</code>
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!