IEnumerableのメモ
IEnumerable, IEnumerator, IEnumerable
- 非ジェネリック
- IEnumerable
- IEnumerator GetEnumerator() : コレクションを反復処理する列挙子を返します。
- IEnumerator
- Object Current { get; } : コレクション内の現在の要素を取得します。
- bool MoveNext() : 列挙子をコレクションの次の要素に進めます。
- 戻り値 : 列挙子が次の要素に正常に進んだ場合は true。列挙子がコレクションの末尾を越えた場合は false。
- void Reset() : 列挙子を初期位置、つまりコレクションの最初の要素の前に設定します。
- ジェネリック
- IEnumerable
: IEnumerable
- IEnumerator
GetEnumerator()
- IEnumerator
: IDisposable, IEnumerator
- T Current { get; } : 列挙子の現在位置にあるコレクション内の要素を取得します。
IEnumerator
実装時の注意
このインターフェイスを実装するには、非ジェネリックの IEnumerator インターフェイスを実装する必要があります。MoveNext、Reset、および Dispose の各メソッドは、T に依存せず、非ジェネリック インターフェイスにのみ含まれています。Current プロパティは、両方のインターフェイスに含まれていますが、戻り値の型が異なります。非ジェネリックの IEnumerator.Current プロパティを明示的なインターフェイス実装として実装します。これにより、非ジェネリック インターフェイスのコンシューマがジェネリック インターフェイスを使用できます。
IEnumerator
実は Enumera* が苦手なんだけど、何が苦手って、「e」をいつも忘れてしまうw
e が入るんだよ、e が!ってここで書いておけば、しばらくは忘れないかもw
でもコンテナなんてたびたび実装するものでもないので、また忘れるんだろうな…。