¿Qué son IEnumerable, ICollection e IList?

El objetivo de este artículo es que los lectores obtengan un mayor conocimiento entre IEnumerable, ICollection y IList. El cual lo se dividirá en dos partes: En primer lugar se hablará sobre qué es cada uno de ellos. En segundo lugar, cuál es la mejor práctica para usarlos.
Si obtienes la comprensión del principio, automáticamente estarás confiado cuando tengas que tomar la decisión al utilizarlos.

Descripción

IEnumerable, ICollection e IList son interfaces en .NET, las cuales son utilizadas frecuentemente. IEnumerable es la base de las interfaces ICollection e IList (y muchas otras).

IEnumerable Interface

Tal y como hemos comentado, existen dos interfaces diferentes, definidas en la biblioteca de clases base .NET. Una de ellas es una interfaz no genérica IEnumerable y la otra  una interfaz genérica tipo IEnumerable <T>. Como principal característica, los IEnumerable Interface pueden ser recorridos con la sentencia foreach.

IEnumerable, se localiza en el namespace System.Collections espacio y la definición de la interfaz es:

La cual contiene sólo una única definición de método, es decir, GetEnumerator () y el método GetEnumerator debe devolver una instancia de un objeto de una clase que implementa la interfaz IEnumerator.  La interfaz IEnumerator implementa dos métodos, MoveNext() y Reset() y también tiene una propiedad llamada Current que devuelve el elemento actual en la lista.

Mientras que IEnumerable <T> es una interfaz genérica de tipo seguro , se localiza en el namespace System.Collections.Generic espacio y la definición de la interfaz es:

Hay que destacar que IEnumerable<T> inherits from IEnumerable Interface.

ICollection Interface

Vuelve a suceder los mismo que antes, existen dos interfaces diferentes, definidas en la biblioteca de clases base .NET. Una de ellas es una interfaz no genérica ICollection y la otra  una interfaz genérica tipo ICollection <T>. Al igual que antes, también pueden ser recorridos con la sentencia foreach. Además no solo permite hacer las mismas operaciones que los IEnumerable, sino que también podemos hacer las propias de ICollection, tal y como veremos a continuación.

La definición de ICollection es la siguiente:

Donde tal y como podemos ver ICollection hereda de IEnumerable, el cual nos permite utilizar todos los métodos de IEnumerable adicionalmente.

Mientras que la definición de ICollection <T> es:

El cual vuelve a tratarse de una interfaz genérica de tipo seguro y heredar a su vez de IEnumerable<T> e IEnumerable

IList Interface

Como es ya de imaginar, existen dos interfaces diferentes, definidas en la biblioteca de clases base .NET. Una de ellas es una interfaz no genérica IList y la otra  una interfaz genérica tipo IList <T>. Al igual que antes, también pueden ser recorridos con la sentencia foreach. Además no solo permite hacer las mismas operaciones que los IEnumerable e ICollection, sino que también podemos hcer las propias de IList, tal y como veremos a continuación.

La definición de IList es la siguiente:

Donde se observa claramente la herencia de ICollection e IEnumerable.

Mientras que la definición de IList <T> es:

El cual vuelve a ser del tipo genérico seguro y heredar de ICollection, IEnumerable <T>  e IEnumerable.

¿ Cómo los usamos?

David Aldón

Junior Software Engineer | Soluciones Microsoft | SOGETI ESPAÑA

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s