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

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

【问题讨论】:

    标签: 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 添加项目时,该项目将始终停留在该索引处。当然,除非你改变它。

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

          【讨论】:

            猜你喜欢
            • 2021-01-27
            • 1970-01-01
            • 1970-01-01
            • 2010-10-05
            • 1970-01-01
            • 2012-09-04
            • 2015-09-18
            • 1970-01-01
            相关资源
            最近更新 更多