Duplicar posible:
C# - List<T> or IList<T>¿Por qué debería devolver IList <T> sobre la lista <T>?
está escrito todo, así que debería volver IList<T>
de sus métodos y no List<T>
pero no puede encontrar ninguna realmente buenas razones para ello. Sigo encontrando código que hace esto, y luego el código de llamada por lo general hace una de dos cosas:
- llamada
new List<T>(returnedIList)
por lo que se puede usar todos los métodos agradables en la Lista - arroja de nuevo a
List<T>
para que pueda utilizar todas los métodos agradables en la Lista
el primero de ellos es torpe y el segundo tirarían (tiempo de ejecución)InvalidCastException
si la implementación realidad cambió a algo más de todos modos (lo que lo hace totalmente s tupido).
si uso List<T>
y por alguna razón tiene que reemplazarlo con una implementación de IList<T>
que no puedo heredar de List<T>
entonces voy a obtener errores de compilación y tiene que cambiar algo de código. Probablemente eso sea muy poco probable y, si sucede, no es mucho trabajo de arreglar. Seguramente no vale la pena perder los beneficios de List<T>
y/o tener que lanzar/nuevo List<T>
(Existe, Buscar, etc.) para recuperarlos en este escenario poco probable.
Entonces, ¿hay otras razones para devolver IList<T>
?
No solo está "escrito completamente", esta misma pregunta ya ha sido hecha y respondida. –
Disculpas: después de 3 páginas de resultados dejé de buscar, ¡ASÍ QUE "Relevancia" parece estar un poco apagado para mí últimamente! Yendo con esta respuesta: http://stackoverflow.com/questions/400135/c-listt-or-ilistt/1522826#1522826; D –
No se necesita disculpa, la búsqueda en SO es de utilidad limitada. Busqué en Google con el sitio: stackoverflow.com! para encontrar el idiota! –