Rumah > pembangunan bahagian belakang > C++ > Adakah ToList() Mencipta Salinan Dalam atau Salinan Cetek Senarai?

Adakah ToList() Mencipta Salinan Dalam atau Salinan Cetek Senarai?

Barbara Streisand
Lepaskan: 2024-12-30 19:25:11
asal
783 orang telah melayarinya

Does ToList() Create a Deep Copy or a Shallow Copy of a List?

Apabila ToList() Dipanggil, Adakah Ia Mencipta Senarai Baharu?

Dalam senario ini, kami sedang bekerja dengan kelas yang dipanggil MyObject yang mempunyai harta yang dipanggil SimpleInt. Katakan kita mempunyai senarai contoh MyObject. Jika kami melaksanakan ToList() pada senarai ini dan seterusnya mengubah suai sifat SimpleInt salah satu elemen dalam senarai baharu, adakah perubahan ini akan disebarkan kembali ke senarai asal?

Memahami ToList( ) Fungsi

Kaedah ToList() direka untuk mencipta salinan baharu senarai asal. Walau bagaimanapun, dalam situasi khusus ini, kami berurusan dengan jenis rujukan (iaitu, MyObject ialah jenis rujukan). Ini bermakna apabila kami membuat senarai baharu menggunakan ToList(), senarai baharu akan mengandungi rujukan kepada objek yang sama seperti senarai asal.

Akibat Jenis Rujukan

Oleh kerana MyObject ialah jenis rujukan, mengubah sifat SimpleInt bagi objek yang dirujuk dalam senarai baharu juga akan menjejaskan objek yang sepadan dalam senarai asal. Ini kerana kedua-dua senarai menunjuk kepada kejadian yang sama.

Struct vs. Class

Adalah penting untuk ambil perhatian bahawa tingkah laku ini hanya terpakai pada jenis rujukan. Jika MyObject diisytiharkan sebagai struct (jenis nilai) dan bukannya kelas (jenis rujukan), senarai yang baru dibuat melalui ToList() akan mengandungi salinan elemen senarai asal. Akibatnya, sebarang pengubahsuaian yang dibuat pada elemen struktur dalam senarai baharu tidak akan memberi kesan kepada senarai asal.

Atas ialah kandungan terperinci Adakah ToList() Mencipta Salinan Dalam atau Salinan Cetek Senarai?. 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