Katakanlah saya punya kelas
public class MyObject
{
public int SimpleInt{get;set;}
}
Dan saya punya List<MyObject>
, dan saya ToList()
dan kemudian mengubah salah satu SimpleInt
, akankah perubahan saya disebarkan kembali ke daftar asli. Dengan kata lain, apa yang akan menjadi hasil dari metode berikut?
public void RunChangeList()
{
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;
}
Mengapa?
P / S: Saya minta maaf jika tampaknya jelas untuk mencari tahu. Tapi saya tidak punya kompiler dengan saya sekarang ...
.ToList()
membuat salinan yang dangkal . Referensi disalin, tetapi referensi baru masih menunjuk ke contoh yang sama dengan referensi asli menunjuk. Ketika Anda memikirkan hal itu,ToList
tidak dapat membuatnew MyObject()
saatMyObject
adalahclass
jenis.