IEnumerable и порядок

У меня вопрос по приказу в IEnumerable.

Насколько мне известно, перебор IEnumerable является псевдо-кодом, который можно записать следующим образом:

while (enumerable.HasNext())
{
    object obj = enumerable.Current;
   ...
}

Теперь предположим, что нужно работать с отсортированной коллекцией. Можно ли в этом случае использовать IEnumerable или лучше попробовать другие средства (, т.е.IList)с поддержкой индексации?

Другими словами :дает ли договор IEnumerableкакие-либо гарантии порядка в целом?

Таким образом, IEnumerableне является правильным средством для обобщенного интерфейса, гарантирующего порядок. Новый вопрос заключается в том, какой интерфейс или класс следует использовать для неизменяемой коллекции с порядком? ReadonlyCollection? IList? Оба они содержат Add()метод (, даже не реализованный в первом ).

Мои собственные мысли:IEnumerableне дают никаких гарантий относительно заказа. Правильная реализация может возвращать одни и те же элементы в разном порядке в разных перечислениях (рассмотрите SQL-запрос)

Я знаю о LINQ First(), но если IEnumerableни слова не говорит о его порядке, это расширение красиво бесполезный.

42
задан double-beep 31 January 2019 в 15:51
поделиться