Niezliczona ilość i porządek

Mam pytanie dotyczącezamówienie wIEnumerable.

O ile mi wiadomo, iterowanie przez IEnumerable to pseudo-kod może być napisany w następujący sposób:

<code>while (enumerable.HasNext())
{
    object obj = enumerable.Current;
    ...
}
</code>

Załóżmy teraz, że trzeba działać na aposortowane kolekcja. Czy w tym przypadku można użyć IEnumerable lub lepiej wypróbować inne środki (tj.IList) z obsługą indeksacji?

Innymi słowy: czy umowa zIEnumerable w ogóle gwarantować porządek?

Więc,IEnumerable nie jest właściwym środkiem dla ogólnego interfejsu, który gwarantuje zamawianie. Nowe pytanie dotyczy tego, jaki interfejs lub klasapowinien być używane do niezmiennej kolekcji z zamówieniem?ReadonlyCollection? IList? Oba zawierająAdd() metoda (nawet nie jest zaimplementowana w poprzedniej).

Moje własne myśli:IEnumerable nie daje żadnych gwarancji dotyczących zamówienia. Prawidłowa implementacja może zwrócić te same elementy w innej kolejności w różnych wyliczeniach (rozważ zapytanie SQL)

Wiem o LINQFirst(), ale jeśliIEnumerable nie mówi ani słowa o tym zamówieniu, to rozszerzenie jest całkiem bezużyteczne.

questionAnswers(4)

yourAnswerToTheQuestion