LoginSignup
1
2

C# IEnumerable型とList型の違い

Posted at

C#のコードを書いていて、IEnumerableをなんとなく使っていたため、
List型・Collection型と比較しながらまとめてみました。

IEnumerableとは

コレクションの要素を順番に取り出すことができるインターフェース
ひとことで言うとforeachで繰り返しをするためのイテレータを表す型

特徴

  • 遅延評価: IEnumerableは要素を順次取り出すため、必要な要素だけが評価される。これにより、大量のデータを効率的に処理できる
  • 読み取り専用: コレクションの要素を追加や削除するができない。要素の変更は行えない
  • インデクサアクセスなし: IEnumerableにはインデクサがないため、特定の要素にランダムアクセスすることができない

インデクサとは
配列型と同様に [] を用いた要素の読み書きが行えるような仕組み

  • 継承可能: IEnumerableはインターフェースなので、独自のコレクションクラスを定義することができる

ICollection型

IEnumerableを継承したものなのでコレクションの要素を順番に取り出すことができる。
IEnumerableと異なり、要素数のカウントを行うことができる

IList型

コレクションに対する、追加・変更・削除も含めた、全ての操作が可能である。
ICollection型を継承しているので、要素数のカウント、コレクションの列挙を行うことができる。

まとめ

IEnumerableはコレクションの列挙のみ可能、ICollectionは加えてコレクションの要素数のカウントが可能である。IListは2つの特徴に加えて、コクションの追加・変更・削除を含めた全ての操作が可能

まとめ

継承の流れ
IEnumerable → ICollection → IList

IEnumerableはコレクションの列挙のみ可能、ICollectionは加えてコレクションの要素数のカウントが可能である。IListは2つの特徴に加えて、コクションの追加・変更・削除を含めた全ての操作が可能

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2