【发布时间】:2015-12-15 14:28:40
【问题描述】:
我不明白,为什么我的原始 ArrayList 的内容会被排序,如果我复制它然后(仅)排序这个副本。这是我使用的代码 sn-p:
Dim LatSorted As ArrayList = arLat
LatSorted.Sort()
ArrayList arLat 包含纬度(双精度类型的未排序坐标)。如果我将整个内容复制到一个名为 LatSorted 的新 ArrayList 中,则原始数据不会按预期发生任何变化。但是只要我对新填充的 ArrayList LatSorted 进行排序,原来的 ArrayList 也会被排序。
我找到了解决方法:
如果我使用命令
Dim LatSorted As ArrayList = arLat.Clone 它按预期工作。
再次:为什么新 ArrayList 的 .Sort - 命令也会触及我原来的 ArrayList?
【问题讨论】:
-
没有new ArrayList。 ArrayLists 是引用类型。您的第一行代码没有创建 ArrayList 的副本,它只是创建了对同一 ArrayList 的新引用。两个变量都指向同一个 ArrayList。但正如您所发现的,调用 Clone 创建了 ArrayList 的副本。但是请注意,如果 ArrayList 中有引用类型,则 Clone 方法实际上可能不会复制这些对象。您可能会得到参考的副本。
标签: vb.net sorting visual-studio-2012 arraylist