所以我有一個列表,並在我的方法,我試圖返回一個新的列表與修改。修改爲新列表重複在原始列表
的問題是,雖然我作出的線索名單的Id的變化也正在向我傳遞的線索列表中進行。
public List<Clue> NewOrderList(List<Clue> clues, int[] ids)
{
var newClueOrder = new List<Clue>();
// For each ID in the given order
for (var i = 0; i < ids.Length; i++)
{
// Get the original clue that matches the given ID
var clue = clues.First(clue1 => clue1.Id == ids[i]);
// Add the clue to the new list.
newClueOrder.Add(clue);
// Retain the ID of the clue
newClueOrder[i].Id = clues[newClueOrder.Count - 1].Id;
}
return newClueOrder;
}
這是爲什麼,什麼是這是最好的解決方案嗎?我見過類似的問題,但說實話,我並不十分明白解決方案到底是什麼。
喬恩Skeet給出了一個真正的好討論這個,爲什麼/當它發生在這裏 - http://www.yoda.arachsys.com/csharp/parameters.html – Tim 2013-04-25 01:09:01
列表是通過引用。如果你想要一個新的對象(線索)創建一個副本。 – 2013-04-25 01:09:41
什麼和哪裏是最好的地方來創建它的副本? – 2013-04-25 01:09:45