web-dev-qa-db-ja.com

ListとIEnumerableの実際の違い

同様の投稿を読むことで、リストはIEnumerableの一種であることを学びました。しかし、私は実際にこれらの2つの実際の違いは何なのかと思っています。

常にリストを使用しており、IEnumerableを使用したことがない人へ:

  • 2つの実際の違いは何ですか?
  • どちらのシナリオが他のシナリオより優れているか?

実用例:4つの文字列を保存し、アルファベット順に並べ、別の関数に渡し、ユーザーに結果を表示します。何を使用しますか?

誰かが私のためにこれを整理したり、正しい方向に私を向けることができれば幸いです。前もって感謝します!

58
Robin

IEnumerableとListの重要な違いの1つ(一方がインターフェイスであり、もう一方が具象クラスであることに加えて)は、IEnumerableが読み取り専用であり、Listがそうではないことです。

したがって、コレクションにあらゆる種類の永続的な変更を加える機能(追加と削除)が必要な場合は、リストが必要になります。コレクションの読み取り、並べ替え、および/またはフィルタリングが必要な場合は、IEnumerableで十分です。

したがって、実際の例では、4つの文字列を一度に1つずつ追加する場合は、Listが必要です。ただし、コレクションを一度にインスタンス化する場合は、IEnumerableを使用できます。

IEnumerable firstFourLettersOfAlphabet = new[]{"a","b","c","d"};

その後、LINQを使用して、必要に応じてリストをフィルター処理または並べ替えることができます。

165
Scott Lawrence

List以外の多くの型は、ArrayListなどのIEnumerableを実装します。したがって、1つの利点は、同じ関数に異なるコレクションタイプを渡すことができることです。

13
DasDave