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!