Diciamo che ho una lezione
public class MyObject
{
public int SimpleInt{get;set;}
}
E ho un List<MyObject>
, e lo faccio ToList()
e poi cambio uno dei SimpleInt
, il mio cambiamento verrà propagato alla lista originale. In altre parole, quale sarebbe l'output del seguente metodo?
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;
}
Perché?
P / S: mi dispiace se sembra ovvio scoprirlo. Ma non ho compilatore con me ora ...
.ToList()
fare una copia superficiale . I riferimenti vengono copiati, ma i nuovi riferimenti puntano ancora alle stesse istanze a cui fanno riferimento i riferimenti originali. Quando ci pensi,ToList
non puoi crearne unonew MyObject()
quandoMyObject
è unclass
tipo.