用いて実装する必要があります。完了シグナルを送信できないようにするためです。消費している側は知る必要がありませんし、完了シグナルを送れるべきではありません。完了の権を他人に握らせないようにする事ができるのです。イテレータに解決の糸口があります。導入され、以下のような感じで書けるようになりました。}}これを使う側は、いろいろな書き方ができます。メソッドに入ったり出たりできるようにする必要がある、という事です。遭遇するまで実行されます。された値を返す必要があります。された行の直後から実行される必要があります。前回呼び出したときの状態をそのままにしておく必要があります。イテレータは事実上のコルーチンであり、コンパイラはこれらをステートマシンとして展開します。メソッドは以下のように展開されます。自体にはそのあたりの制限がないのでコンパイラが生成した型やフィールド名には<>がよく使われています。最後にサスペンドした場所にジャンプするための分岐なども追加されています。変数は、MoveNextの呼び出しにまたがって持続するように、ステートマシンのフィールドと化しています。叩いて、適切なタイミングでイテレータを進ませることが出来る事を示しました。このようなアプローチでは、次のようなヘルパーメソッドを書くことができます。叩かれ...というのを繰り返す感じです。呼び出されるようにするためのメソッドです。具体的にどう使うかをみると、何が嬉しいかが一目瞭然です。