Qualcuno può dirmi quando dovrei usare entrambi.Cosa devo usare un oggetto IEnumerable o IList?
Ad esempio, penso che dovrei usare un IList quando voglio accedere al .Count della raccolta o di un singolo elemento, corretto?
Grazie.
Qualcuno può dirmi quando dovrei usare entrambi.Cosa devo usare un oggetto IEnumerable o IList?
Ad esempio, penso che dovrei usare un IList quando voglio accedere al .Count della raccolta o di un singolo elemento, corretto?
Grazie.
In generale, si dovrebbe cercare di utilizzare il tipo meno specifica che soddisfa il vostro scopo. IEnumerable è meno specifico di IList (IList implementa IEnumerable) quindi, a meno che tu non voglia qualcosa di specifico da IList (come .Count come suggerisci, o magari Aggiungi, Elimina, ecc.), Userei IEnumerable.
Su alcune delle belle aggiunte ottenute da IEnumerable è possibile scrivere metodi di iteratore per restituire questo tipo (cercare "rendimento restituito" e metodi iteratore se non si ha familiarità con essi). Questo ti permette di scrivere "pipeline" molto efficienti per i tuoi loop.
Si utilizza IEnumerable quando si desidera eseguire il ciclo degli elementi di una raccolta.
IList è quando si desidera aggiungere, rimuovere e accedere al contenuto dell'elenco fuori servizio.
IList vs IEnumerable for Collections on Entities
http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=722
si dovrebbe usare IList quando è necessario l'accesso da parte di indice alla vostra collezione, aggiungere ed eliminare elementi, ecc, e IEnumerable quando è necessario solo enumerare sopra la vostra collezione.
Una risposta molto semplice, la posso estendere se descrivete lo scenario.
Sono d'accordo con l'utilizzo del tipo meno derivato. ICollection <> è sufficiente per la maggior parte di aggiunta/rimozione. –
@ Mark H - buon punto - per la maggior parte delle operazioni di aggiunta/rimozione, anche IList è inutilmente specifico. –
IList * implementa * IEnumerable ?! –