Disons que j'ai une classe
public class MyObject
{
public int SimpleInt{get;set;}
}
Et j'ai un List<MyObject>
, et je ToList()
le change , puis je change l'un des SimpleInt
, ma modification sera-t-elle propagée à la liste d'origine. En d'autres termes, quel serait le résultat de la méthode suivante?
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;
}
Pourquoi?
P / S: Je suis désolé s'il semble évident de le découvrir. Mais je n'ai pas de compilateur avec moi maintenant ...
.ToList()
une copie superficielle . Les références sont copiées, mais les nouvelles références pointent toujours vers les mêmes instances que celles vers lesquelles pointent les références d'origine. Quand on y pense,ToList
on ne peut pas en créernew MyObject()
quandMyObject
est unclass
type.