19

如果我在 C#.NET 中使用 ArrayList,是否保证顺序与我添加项目的顺序相同?

4

5 回答 5

40

是的,元素总是被添加到末尾(除非您另外指定,例如调用Insert)。换句话说,如果你这样做:

int size = list.Count;
int index = list.Add(element);
Assert.AreEqual(size, index); // Element is always added at the end
Assert.AreEqual(element, list[index]); // Returned index is position in list

当然,如果您删除任何较早的元素或在其前面插入新元素,该位置将会改变。

您是否有充分的理由使用ArrayList而不是List<T>顺便说一句?非通用集合是如此2003...

(顺便说一下,订单也很稳定List<T>。)

于 2008-11-26T15:29:47.647 回答
6

是的,除非您的某些代码通过交换等方式更改了顺序。

于 2008-11-26T15:29:40.550 回答
4

是的。因为它存储为数组。

其他属性是

  • 保证订单
  • 随机访问。您可以通过 O(1) 中的索引访问任何元素
  • 在开头和中间缓慢插入和删除。
  • 未分类。(使用快速排序或类似的排序应该花费 O(n log n))
于 2008-11-26T15:32:16.363 回答
2

是的。[傻回答长度限制]

于 2008-11-26T15:29:54.387 回答
0

当您将项目添加到 ArrayList 时,该项目将始终保留在该索引处。当然,除非你改变它。

(框架可能会重新排列内存,但您的索引将始终保持不变)

于 2008-11-26T15:30:47.507 回答