ForEach()とAction!(匿名メソッドつき)ForEach()とAction!(匿名メソッドつき)ForEach()の概要ForEach()メソッドは、C#2.0の新機能です。便利で、ジェネリックを強力にバックアップしてくれます。ForEach()の役割は、foreachキーワードと同じような感じです。「コレクションの要素をひたすらAction!」と覚えておけば、まあ一生困らないでしょう。使い方はけっこう複雑です。C#で最も難しい「デリゲート」であるActionを使うからです。ForEach()は簡単ですが、デリゲートが難しい。応用講義で解説しているんですが、もう1度デリゲートから解説しましょう。デリゲートとは?デリゲートとは「クラスもどきのメソッドの箱」です。クラスもどきのメソッド、なのですが、そこにメソッドを追加していける「箱」なのです。サンプルを見てください。}}これはForEach()のサンプルです。Actionというデリゲートを使っています。ここがまず、ポイントになるでしょう。上の方のusingを見てください。名前空間がありますね。System.Collections.Generic;実は、Actionというデリゲートメソッドは、すでにこの名前空間の中で宣言されています。いうキーワードで、もう作られているのです。Action<int>(Kakezan);この2行が、Actionデリゲートメソッドを使っているところです。このactionという箱に入れるメソッドです。2行目は、箱の中にさらにKakezanというメソッドを追加しています。追加の演算子でしたね。両方がセットで入っているという状況です。デリゲートというのは「クラスもどきのメソッドの箱」だと言いましたね。使うとこはクラスにそっくり、だけど中身はメソッド。不思議なForEach()デリゲートも不思議ですが、ForEach()はもっと不思議です。1行で、すごい働きをしてくれる。この1つのメソッドがすでにスーパーコンピューターとして独立しているような感じですね。「クラスもどきのメソッドの箱」を受け取ります。何度も言っているように、「箱」です。メソッドの両方が入っています。受け取ると、コレクションの要素を次々と箱の中のメソッドに入れていきます。奇数の数列が入ってますよね。