ToList(): Adakah Ia Mencipta Senarai Baharu?
Dalam C#, ToList() ialah kaedah yang mencipta senarai baharu dengan salinan elemen daripada senarai sedia ada. Dalam kes jenis rujukan seperti kelas, salinan mengandungi rujukan kepada objek yang sama seperti yang asal.
Pertimbangkan kod berikut:
public class MyObject { public int SimpleInt { get; set; } } ... var objs = new List<MyObject>() { new MyObject() { SimpleInt = 0 } }; var whatInt = ChangeToList(objs); public int ChangeToList(List<MyObject> objects) { var objectList = objects.ToList(); objectList[0].SimpleInt = 5; return objects[0].SimpleInt; }
Dalam kod ini, kaedah ChangeToList mengambil senarai objek MyObject dan tukarkannya kepada senarai baharu menggunakan ToList(). Ia kemudiannya mengubah suai sifat SimpleInt bagi objek pertama dalam senarai baharu.
Perkara utama yang perlu diperhatikan di sini ialah MyObject ialah jenis rujukan. Oleh itu, operasi ToList() mencipta senarai baharu, tetapi elemen dalam senarai baharu adalah rujukan kepada objek yang sama dalam senarai asal. Akibatnya, apabila sifat SimpleInt objek yang dirujuk dalam senarai baharu diubah suai, perubahan itu juga ditunjukkan dalam objek yang sepadan dalam senarai asal. Inilah sebabnya mengapa output kaedah RunChangeList() ialah 5, kerana pengubahsuaian yang dibuat dalam senarai baharu disebarkan ke senarai asal.
Atas ialah kandungan terperinci Adakah ToList() C# Mencipta Salinan Dalam atau Salinan Cetek Elemen Senarai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!