C#.NET 中是不是保证数组列表的顺序?

Posted

技术标签:

【中文标题】C#.NET 中是不是保证数组列表的顺序?【英文标题】:Is the order of an arraylist guaranteed in C#.NET?C#.NET 中是否保证数组列表的顺序? 【发布时间】:2010-09-24 04:19:57 【问题描述】:

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

【问题讨论】:

【参考方案1】:

是的,元素总是添加到末尾(除非您另外指定,例如调用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>?非泛型集合 so 2003...

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

【讨论】:

“2003 年的非通用集合如此......” - 大声笑,很好的乔恩,这是我本周的报价:)【参考方案2】:

是的,除非您的某些代码更改了顺序,例如交换。

【讨论】:

【参考方案3】:

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

其他属性是

保证订单 随机访问。您可以通过 O(1) 中的索引访问任何元素 在开头和中间缓慢插入和删除。 未分类。 (使用快速排序或类似方法进行排序需要 O(n log n))

【讨论】:

【参考方案4】:

是的。 [愚蠢的答案长度限制]

【讨论】:

【参考方案5】:

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

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

【讨论】:

以上是关于C#.NET 中是不是保证数组列表的顺序?的主要内容,如果未能解决你的问题,请参考以下文章

foreach 是不是保证在 php 中以数组顺序进行迭代?

foreach 是不是保证在 php 中以数组顺序进行迭代?

Node net.Socket.on("data") 事件是不是有保证的顺序?

jQuery 的 $().each() 的排序顺序是不是得到保证?

List<T> 是不是保证插入顺序?

JSON 列表中元素的顺序是不是保留?