function)」とも呼ばれる「名前付けされずに定義された関数」です。名前がない関数をどうやって呼び出す?匿名メソッドが「名前がない関数」ですが、関数に名前がないのにどうやってその関数を呼び出すのか、ということになります。これについては、「デリゲート」が大きく関わってきます。普通の名前があるメソッドを呼び出すデリゲートのプログラムです。Console.WriteLine("テスト用のTestDisplayというメソッドです。}このプログラムの場合、デリゲートで呼び出されるメソッドは”TestDisplay”という、メソッドの”名前”があります。デリゲートは、メソッドを参照できる型で変数を作ることができます。匿名メソッドは、メソッドの定義をそのままデリゲート変数に代入しておいて、そのデリゲートを呼び出すことで実行することができるというものです。}デリゲートを生成して実行し、"デリゲートですが、このメソッドそのものに名前はありません・・・"という文字列が表示されますが、このメソッドには本当に名前がありません(これが「匿名メソッド(無名関数)」と呼ばれるものです)。下記のようなコードの場合どうなるでしょう。}}コードだけで見ると、想定される表示は、0123456789ですが、実際にこのコードを実行すると10101010101010101010となります。値がすべて同じなのも気になりますが、何より値がすべて10というのは不思議です。(i=10だとforループの中の処理は実行されていないはずだからです)ところが、このプログラムを下記のように変更するだけで想定した動きになります。}}上記のコードを実行すると、0123456789と、想定した通りの動きになります。この2つのプログラムの違いは、ループ内のローカル変数に値を代入して、匿名メソッドはそのローカル変数を扱うように変更しただけです。結果が違う?まず、スコープ外に出たはずの変数の値がなぜ扱えているかというと、「匿名メソッドが上位スコープの変数を参照しているとき、その変数の寿命を匿名メソッドの寿命が尽きるまで延命する機能」で、「外部変数のキャプチャ」という機能によるものです。テストプログラム1では、生成した10個の匿名メソッドが参照していた変数は’i’という変数1つです(しかも変数iはループを脱出したときの値になっているので、値はすべて’10’だったのです)。テストプログラム2では、「iが0のときのvalという変数の値」、「iが1のときのvalという変数の値」・・・というように、10個の匿名メソッドそれぞれで個別の変数’val’が存在して生成されており、それぞれの値が保持されていたからです。「匿名メソッド(無名関数)」を使うときには、この「外部変数のキャプチャ」に注意してお使いください。フォームアプリケーションで「ツールバー」を使うと直感的な操作を行えるので便利です。今回は、コーディングのみでToolStripコントロールを使ってツールバーを作る方法を紹介します。コレクションを操作する(IEnumerableインターフェース)今回は、IEnumerable<T>インターフェースの基本について書きます。TraceListernerの派生クラスを作るプログラムを作ってデバッグをするときに「トレース」はとてもよく使います。Studioなどでは「出力」ウィンドウなどに表示などをしてくれるのでとても助かります。データ型クラスを生成する機能があります。ファイルの属性を取得する(System.IO.FileInfoクラス)「ファイルの属性」は、このファイルが「どういう」ファイルなのか、を表現するものです。知られているだけでも種類がいろいろあります。