Гарантирован ли порядок массива в C # .NET? - PullRequest
17 голосов
/ 26 ноября 2008

Если я использую ArrayList в C # .NET, гарантированно ли порядок останется таким же, как порядок добавления элементов в него?

Ответы [ 5 ]

39 голосов
/ 26 ноября 2008

Да, элементы всегда добавляются в конец (если не указано иное, например, при вызове 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>.)

6 голосов
/ 26 ноября 2008

Да, если какой-то фрагмент кода не изменяет порядок, например, замена.

4 голосов
/ 26 ноября 2008

Да, это так. Поскольку он хранится в виде массива.

Другие свойства

  • Гарантированный заказ
  • Случайный доступ. Вы можете получить доступ к любому элементу по индексу в O (1)
  • Медленная вставка и удаление в начале и в середине.
  • Unsorted. (Сортировка должна занять O (n log n) с использованием быстрой сортировки или аналогичной)
2 голосов
/ 26 ноября 2008

Да. [ограничение длины глупого ответа]

0 голосов
/ 26 ноября 2008

Когда вы добавляете элемент в ArrayList, он всегда будет оставаться с этим индексом. Если, конечно, если вы измените его.

(фреймворк может переставить память, но ваш индекс всегда останется прежним)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...