Pregunta

¿Puedo asumir que la IEnumerator que recibo de un IList (llamando al método GetEnumerator desde la interfaz IEnumerable) me dará los elementos en el orden de la lista?

¿Fue útil?

Solución

No se puede, pues IList es una interfaz y una implementación puede enumerar artículos en cualquier orden. Por ejemplo, podría implemenent WeirdList: IList, y tienen que enumerar los elementos de cualquier manera, incluyendo de manera no determinista. Si se utiliza una lista (T), por otro lado, se garantiza a enumerar los elementos en el orden en que se almacenan en la lista.

Editar : Dicho esto, como muchos otros señalan, la mayoría de las implementaciones seguirán a la semántica de la lista (T). A pesar de que no era lo que pidieron;)

Otros consejos

El empadronador debe dar acceso a los objetos dentro de la lista respecto a su posición en la memoria lo que sería lo mismo que usar el indexador de la lista que va de 0 a Longitud <1 en un bucle.

Editar respondí específicamente en lo que respecta a las clases de .NET Framework que implementan IList, en caso de cualquier otra persona implementar estas interfaces su aplicación real podría ser casi cualquier cosa. Así que depende de implementador.

Sí, va a hacer exactamente eso, para cualquier aplicación decente de IList por lo menos. Un buen IList siempre debe enumerar sus elementos en el mismo orden que en el que la lista está indexado.

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

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

Las impresiones 112358.

Esto dependerá de la aplicación de la IList

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top