IEnumerableのメモ

IEnumerable, IEnumerator, IEnumerable, IEnumerator について MSDN から説明のポイントだけまとめて引用。

  • ジェネリック
    • IEnumerable
      • IEnumerator GetEnumerator() : コレクションを反復処理する列挙子を返します。
    • IEnumerator
      • Object Current { get; } : コレクション内の現在の要素を取得します。
      • bool MoveNext() : 列挙子をコレクションの次の要素に進めます。
        • 戻り値 : 列挙子が次の要素に正常に進んだ場合は true。列挙子がコレクションの末尾を越えた場合は false。
      • void Reset() : 列挙子を初期位置、つまりコレクションの最初の要素の前に設定します。
    • IEnumerator : IDisposable, IEnumerator
      • T Current { get; } : 列挙子の現在位置にあるコレクション内の要素を取得します。

IEnumerator 実装時の注意
このインターフェイスを実装するには、非ジェネリックの IEnumerator インターフェイスを実装する必要があります。MoveNext、Reset、および Dispose の各メソッドは、T に依存せず、非ジェネリック インターフェイスにのみ含まれています。Current プロパティは、両方のインターフェイスに含まれていますが、戻り値の型が異なります。非ジェネリックの IEnumerator.Current プロパティを明示的なインターフェイス実装として実装します。これにより、非ジェネリック インターフェイスのコンシューマがジェネリック インターフェイスを使用できます。

IEnumerator って IDisposable インターフェイスを継承してたのか。
実は Enumera* が苦手なんだけど、何が苦手って、「e」をいつも忘れてしまうw
e が入るんだよ、e が!ってここで書いておけば、しばらくは忘れないかもw
でもコンテナなんてたびたび実装するものでもないので、また忘れるんだろうな…。