典型的なコンテキスト:要素が順序付けされていると見なすコレクションの拡張メソッドを作成します。関数はインデックス0から始まり、順序が重要です。例:アイテムのシーケンスまたはインデックスによるグループ化。
しかし、私は常に拡張すべきことの困惑:IEnumerable<T>
またはT[]
。私の理論的根拠は明確な目的でした:配列には順序付けの概念がありますが、IEnumerableは多くの一般的なコレクションによって実装されますが、すべてに順序付けの概念があるわけではありません。
- 辞書-順不同
- HashSet-順不同
- LinkedList-順序付け
- リスト-注文済み
- キュー-注文済み
- SortedDictionary-ソート済み(元の順序ではない)
- SortedList-ソートされた(元の順序ではない)
- SortedSet-ソート済み(元の順序ではない)
- スタック-反転
同様に、注文される場合と注文されない場合がある他の実装。
また、列挙が完了していない場合に列挙子がリセットされるかどうかは定かではありません。それが心配な場合は、列挙がどの時点で開始されるのか誰が知っているのでしょうか。配列の列挙は常に最初から始まります。
したがって、私にとっては、を拡張する方が理にかなっていT[]
ます。しかし、私はそれを正しいと思いますか?心配しすぎですか?「順序付けされた」列挙を保証するための適切なアプローチは何ですか?