Digamos que eu tenho uma aula
public class MyObject
{
public int SimpleInt{get;set;}
}
E eu tenho um List<MyObject>
, e eu ToList()
, e depois altero um dos SimpleInt
, minha alteração será propagada de volta para a lista original. Em outras palavras, qual seria o resultado do método a seguir?
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;
}
Por quê?
P / S: Me desculpe se parece óbvio descobrir. Mas eu não tenho compilador comigo agora ...
.ToList()
fazer uma cópia superficial . As referências são copiadas, mas as novas referências ainda apontam para as mesmas instâncias que as referências originais apontam para. Quando você pensa sobre isso,ToList
não pode criar nenhumnew MyObject()
quandoMyObject
é umclass
tipo.