80

同様の投稿を読むことで、List は IEnumerable の一種であることがわかりました。しかし、これら2つの実際の違いは実際には何なのか、本当に疑問に思っています。

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

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

実用的な例を次に示します。4 つの文字列を格納し、アルファベット順に並べ替えて、別の関数に渡し、ユーザーに結果を表示します。何を使用し、その理由は?

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

4

2 に答える 2

229

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

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

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

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

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

于 2013-07-03T13:15:24.190 に答える
14

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

于 2013-07-03T13:07:05.073 に答える