Powiedzmy, że mam zajęcia
public class MyObject
{
public int SimpleInt{get;set;}
}
I mam List<MyObject>
, a ja ToList()
to, a następnie zmieniam jedną z SimpleInt
, czy moja zmiana zostanie propagowana z powrotem do oryginalnej listy. Innymi słowy, jaki byłby wynik następującej metody?
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;
}
Czemu?
P / S: Przepraszam, jeśli wydaje się to oczywiste. Ale teraz nie mam ze sobą kompilatora ...
.ToList()
jest to płytka kopia. Odniesienia są kopiowane, ale nowe odniesienia nadal wskazują te same wystąpienia, na które wskazują oryginalne odniesienia. Kiedy się nad tym zastanowić,ToList
nie można stworzyć żadnego,new MyObject()
kiedyMyObject
jestclass
typem.