2015-01-09 24 views
6

IEnumerable<T>IReadOnlyList<T>をリターンパラメータタイプまたは入力パラメータタイプとして選択する点の違いは何ですか?IEnumerable <T> vs IReadOnlyList

IEnumerable<T>は何IReadOnlyList<T>

答えて

11

IEnumerable<T>によって露出されるが、いくつかのデータに対する順方向専用カーソルを表す.Count.ElementAtを提供します。一度に1つのアイテムを見ながら、コレクションの最初から最後まで行くことができます。

IReadOnlyList<T>は、読み取り可能なランダムアクセスコレクションを表します。

IEnumerable<T>は、オンザフライで生成されたアイテム、ネットワーク経由のデータ、データベースからの行などを表すことができるという点でより一般的です。一方、基本的にはメモリ内のコレクションのみを表します。IReadOnlyList<T>

各項目を一度だけ見る必要がある場合は、IEnumerable<T>が優先されます。これはより一般的です。

実際にC++標準テンプレートライブラリを見てみることをお勧めします。様々なタイプのイテレータについての議論は、実際にはあなたの質問にかなりよく対応しています。