【发布时间】:2016-11-05 18:40:27
【问题描述】:
我有一点代码:
private List<Attributes> SplitDataBasedOnNextBranchToTraverse(Branches nextNonLeafBranchToSearch, List<Attributes> attributes) {
List<Attributes> newAttributeListToReturn = attributes;
for (Attributes attribute: newAttributeListToReturn){
for (Branches branches : attribute._branches){
branches.CheckRowExists(nextNonLeafBranchToSearch.ReturnAllRows());
}
}
return newAttributeListToReturn;
}
我有一个全局对象列表,我将其传递给我获取列表副本的方法。复制列表将被更改,现在不应与我传入的全局列表相同。但是,当我调试代码并检查全局列表时,它与我的方法中列表的更改相匹配,为什么?我不希望全局列表改变它需要保持不变!对于如何通过使两个列表彼此唯一来阻止这种情况发生的任何帮助将不胜感激。
【问题讨论】:
-
您没有传递列表的副本,而是传递了一个参考并正在处理它
-
你还没有创建一个新对象.. newAttributeListToReturn 是一个指向同一个全局 List 对象的新引用......
-
您认为您在该代码中的哪个位置复制了列表本身,您为什么这么认为?