2015-01-09 32 views
6

Was ist der Unterschied zwischen IEnumerable<T> vs IReadOnlyList<T> als Rückgabeparameter Typ oder Eingabeparameter Typ der Wahl?IEnumerable <T> vs IReadOnlyList <T>

IEnumerable<T> bietet .Count und .ElementAt das ist das, was von IReadOnlyList<T>

Antwort

11

IEnumerable<T> ausgesetzt ist, stellt eine zukunfts nur über einige Daten Cursor. Sie können vom Anfang bis zum Ende der Sammlung gehen und jeweils einen Gegenstand betrachten.

IReadOnlyList<T> steht für eine lesbare Direktzugriffssammlung.

IEnumerable<T> ist allgemeiner, in dem es Elemente im laufenden Betrieb, Daten über ein Netzwerk, Zeilen aus einer Datenbank usw. IReadOnlyList<T> auf der anderen Seite stellt im Grunde nur In-Memory-Sammlungen darstellt darstellen kann.

Wenn Sie nur jedes Element einmal in der Reihenfolge betrachten müssen, dann ist IEnumerable<T> die bessere Wahl - es ist allgemeiner.

Ich würde empfehlen, die C++ Standard Template Library zu betrachten - ihre Diskussion der verschiedenen Arten von Iteratoren ist ziemlich genau auf Ihre Frage abgebildet.