前編では、C# 2.0の3つの主要な新機能のうち、ジェネリック(Generics)についての概要を解説した。後編である今回は、残る2つの新機能、 匿名メソッド(Anonymous Methods) イテレータ(Iterator) について解説を行っていく。 匿名メソッドとイテレータはどちらも、状態管理に必要なロジックをプログラマに代わって生成してくれるという特徴を持っている。ここでいう状態管理とは、スコープを越えたローカル変数の管理や、foreach文によるループ処理内部での実行ポイントの管理のことである(詳細は追って説明する)。 特にイテレータは、複雑な状態管理をコンパイラにより生成されるMSILコードが自動的に行ってくれる。これにより、単純なコードでも複雑な状態を表現できるようになる。その変化は衝撃的だ。今回はその変化の仕組みの内側を探ることで、C# 2.0が持っている状態管理の全容を