Typischer Kontext: Ich erstelle eine Erweiterungsmethode für eine Sammlung, die berücksichtigt, dass die Elemente geordnet sind. Die Funktion beginnt am Anfang, am Index 0, und die Reihenfolge hat Bedeutung. Beispiele: Gruppierung nach Reihenfolge oder Indizes eines Elements .
Ich bin jedoch immer ratlos, was ich erweitern soll: IEnumerable<T>
oder T[]
. Meine Begründung war die Klarheit des Zwecks: Ein Array hat einen Begriff der Reihenfolge, während ein IEnumerable von vielen generischen Sammlungen implementiert wird, von denen nicht alle einen Begriff der Reihenfolge haben:
- Wörterbuch - ungeordnet
- HashSet - ungeordnet
- LinkedList - bestellt
- Liste - bestellt
- Warteschlange - bestellt
- SortedDictionary - sortiert (nicht ursprüngliche Reihenfolge)
- SortedList - sortiert (nicht Originalbestellung)
- SortedSet - sortiert (nicht Originalbestellung)
- Stapel - umgekehrt
Sowie jede andere Implementierung, die bestellt werden kann oder nicht.
Ich bin mir auch nicht sicher, ob der Enumerator zurückgesetzt wird, wenn eine Enumeration nicht abgeschlossen ist. Wenn dies also eine Sorge ist, wer weiß dann, an welchem Punkt die Enumeration beginnen würde? Das Aufzählen eines Arrays würde immer am Anfang beginnen.
Für mich ist es also sinnvoller, a zu erweitern T[]
. Aber bin ich richtig, wenn ich das denke? Mache ich mir zu viele Sorgen? Was ist der richtige Ansatz, um eine "geordnete" Aufzählung sicherzustellen?