Contexto típico: hago un método de extensión para una colección que considera que los elementos están ordenados. La función comienza al principio, en el índice 0, y el orden tiene importancia. Ejemplos: Agrupación por secuencia o índices de un elemento .
Sin embargo, siempre estoy perplejo en cuanto a qué extender: IEnumerable<T>
o T[]
. Mi razonamiento fue la claridad del propósito: una matriz tiene una noción de orden, mientras que un IEnumerable es implementado por muchas colecciones genéricas, no todas las cuales tienen una noción de orden:
- Diccionario - sin ordenar
- HashSet - sin ordenar
- LinkedList - ordenado
- Lista - ordenada
- Cola - ordenada
- SortedDictionary - ordenado (no orden original)
- SortedList - ordenado (no orden original)
- SortedSet - ordenado (orden no original)
- Pila - invertida
Así como cualquier otra implementación que pueda o no ordenarse.
Además, no estoy seguro de si el enumerador se restablece si no se completa una enumeración, así que si eso es una preocupación, ¿quién sabe en qué punto comenzaría la enumeración? Enumerar una matriz siempre comenzaría desde el principio.
Entonces, para mí, tiene más sentido extender a T[]
. ¿Pero estoy en lo cierto al pensar eso? ¿Me estoy preocupando demasiado? ¿Cuál es el enfoque adecuado para garantizar la enumeración "ordenada"?