Tiendo solo a devolver IEnumerable<T>
cuando quiero indicarle a la persona que llama que la implementación puede usar evaluación diferida. De lo contrario, generalmente devolvería IList<T>
o ICollection<T>
, e implementaría como ReadOnlyCollection<T>
si el resultado fuera de solo lectura.
La evaluación diferida puede ser una consideración importante: si su implementación puede lanzar una excepción, esto no se lanzará hasta que la persona que llama comience a enumerar el resultado. Al devolver IList<T>
o ICollection<T>
, está garantizando que se lanzará cualquier excepción en el momento en que se llame al método.
En el caso de un método WCF, devolver IEnumerable<T>
de un método que utiliza evaluación diferida significa que no se lanzará ninguna excepción hasta que su respuesta se serialice, dándole menos oportunidad de manejarlo en el servidor.
¿Quizás debería agregar de qué idioma está hablando? Este no es un sitio .net solo, después de todo ... –
Tiene razón. Gracias. – User
Si bien ** no es un duplicado exacto **, igual sugiero que eche un vistazo a esta pregunta: http://stackoverflow.com/questions/1072614/should-i-always-return-ienumerablet-instead-of -ilistt – yas4891