Rumah >pembangunan bahagian belakang >C++ >Adakah `ToList()` Mencipta Senarai Objek yang Benar-benar Bebas?

Adakah `ToList()` Mencipta Senarai Objek yang Benar-benar Bebas?

DDD
DDDasal
2025-01-01 08:47:10272semak imbas

Does `ToList()` Create a Truly Independent List of Objects?

Adakah ToList() Mencipta Senarai Baharu dan Objek Bebas?

Apabila berurusan dengan jenis rujukan, adalah penting untuk memahami tingkah laku ToList (). Walaupun ia mungkin mencipta senarai baharu, objek asas masih boleh merujuk yang ada dalam senarai asal.

Instance:

Pertimbangkan kelas MyObject dengan sifat SimpleInt. Senarai MyObjects (objs) dibuat dan senarai tambahan dijana dengan menggunakan ToList() pada objs.

Analisis Fungsi:

Kaedah ChangeToList menerima parameter jenis Senarai dan melakukan perkara berikut:

  1. Memanggil ToList() pada objek parameter, mencipta objectList.
  2. Mengubah suai sifat SimpleInt bagi elemen pertama dalam objectList.
  3. Mengembalikan sifat SimpleInt bagi elemen pertama dalam senarai asal (objs).

Keputusan:

Disebabkan MyObject ialah jenis rujukan, objectList merujuk objek yang sama seperti objs. Oleh itu, mengemas kini objectList[0].SimpleInt juga mengubah suai objs[0].SimpleInt.

Oleh itu, dalam contoh yang diberikan, kaedah ChangeToList akan mengembalikan 5, menunjukkan bahawa perubahan itu disebarkan kembali ke senarai asal. Untuk meringkaskan, ToList() mencipta senarai baharu, tetapi elemen yang terkandung di dalamnya mungkin masih merujuk objek dalam senarai asal. Tingkah laku ini amat relevan apabila bekerja dengan jenis rujukan seperti kelas atau tatasusunan.

Atas ialah kandungan terperinci Adakah `ToList()` Mencipta Senarai Objek yang Benar-benar Bebas?. 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