Frage

Kann ich davon ausgehen, dass die IEnumerator ich von einem IList erhalten (durch die GetEnumerator Methode aus dem IEnumerable Schnittstelle Aufruf) gibt mir die Elemente in der Reihenfolge der Liste?

War es hilfreich?

Lösung

Sie können nicht, weil IList eine Schnittstelle und eine Implementierung kann Elemente in beliebiger Reihenfolge auflisten. Zum Beispiel könnte ich implemenent WeirdList: IList, und habe es Elemente in irgendeiner Weise aufzählen, einschließlich nicht-deterministisch. Wenn Sie eine Liste (T) auf der anderen Seite verwenden, garantiert es Elemente in der Reihenfolge aufzuzählen sie in der Liste gespeichert werden.

Bearbeiten : Dass gesagt wird, wie viele andere darauf hin, die meisten Implementierungen wird die Semantik der List (T) folgen. Obwohl das war nicht das, was Sie gefragt;)

Andere Tipps

Das enumerator sollten Sie auf die Objekte in der Liste in Bezug auf ihre Position im Speicher zuzugreifen, die die gleichen wie mit dem Indexer der Liste von 0 bis Länge <1 in einem for-Schleife gehen würden.

Edit: , antwortete ich speziell in Bezug auf die .NET-Framework-Klassen, die IList implementieren, sollte eine andere Person diese Schnittstellen implementieren ihre tatsächliche Umsetzung so gut wie alles sein könnte. Es hängt also von Implementierer.

Ja, es wird genau das tun, für jede anständige Umsetzung IList zumindest. Eine gute IList soll immer seine Elemente in der gleichen Reihenfolge aufzählen, wie in dem die Liste indiziert ist.

List<int> list = new List<int> { 1, 1, 2, 3, 5, 8 };

IEnumerator<int> enumtor = list.GetEnumerator();
while (enumtor.MoveNext())
{
    Console.Write(enumtor.Current);
}

Prints 112358.

Dies hängt von der Umsetzung des IList

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top