Nehmen wir an, ich habe eine Klasse
public class MyObject
{
public int SimpleInt{get;set;}
}
Und ich habe eine List<MyObject>
, und ich ToList()
es und dann eine der ändern SimpleInt
, wird meine Änderung wieder auf die ursprüngliche Liste weitergegeben. Mit anderen Worten, was wäre die Ausgabe der folgenden Methode?
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;
}
Warum?
P / S: Es tut mir leid, wenn es offensichtlich erscheint, es herauszufinden. Aber ich habe jetzt keinen Compiler bei mir ...
.ToList()
eine flache Kopie zu erstellen. Die Referenzen werden kopiert, aber die neuen Referenzen verweisen immer noch auf dieselben Instanzen wie die ursprünglichen Referenzen. Wenn Sie daran denken,ToList
können Sie keinennew MyObject()
Zeitpunkt erstellen , an dem es sich umMyObject
einenclass
Typ handelt.