目次:
定義-イテレーターの意味
C#のコンテキストでのイテレータは、コレクションまたは配列の値の順序付けられたシーケンスを返すコードのブロックです。 これは、「yield」キーワードを含む1つ以上のステートメントを含むイテレーターブロックを使用して実装されるメンバー関数です。
イテレータを使用して、コレクションまたは配列を含むコンテナクラスのコンシューマが、「foreach」ステートメントを使用してより簡単な方法でコレクションを走査できるようにします。 強く型付けされたコレクションクラスで使用され、バイナリツリーのような複雑なデータ構造を反復します。これは、再帰トラバーサルを必要とし、再帰を通じて反復状態を維持します。 イテレータの概念は、LINQクエリで遅延実行を実装する際にも使用されます。
TechopediaはIteratorについて説明します
反復子は、コレクションの基礎となる構造を公開せずに、アイテムのコレクションの要素を順番に走査する方法を提供する設計パターンに基づいています。 「foreach」ステートメントをサポートするコレクションクラスを作成するときに、「IEnumerator」インターフェイスを手動で実装する面倒なタスクを排除します。 IEnumeratorインターフェイスのメソッドとプロパティを実装するために必要な中間言語コードはコンパイラーによって生成されるため、構文が単純になり、コードサイズが小さくなり、開発者の生産性が向上します。
一般に、イテレータは、コレクション内のデータ要素へのアクセスを提供するという点でデータベースカーソルに似ていますが、反復を実行しません。 イテレータは、メソッド、演算子、またはgetアクセサとしてC#で実装できます。 たとえば、イテレータを使用して文字列のコレクションを走査し、コレクション内の各文字列のコンテンツを表示できます。
イテレータはIEnumeratorインターフェイスで表され、コンパイラによって次のメソッドで実装されます。
- MoveNext:コレクションの次の要素に進み、そのコレクションの終わりを示すメソッド
- Current:現在ポイントされている要素の値を取得するプロパティ
- 破棄:反復をクリーンアップします
