読者です 読者をやめる 読者になる 読者になる

匿名メソッド

これまで、デリゲートオブジェクトにメソッドを格納する形で、さまざまな場所でそのメソッドを呼ぶことができた・・・。
しかし、メソッド自体は、デリゲートの条件に合う引数型と戻り値型で名前の付いたメソッドをきちんと定義しないといけなかった・・・。

名前の無い即興的なメソッドを定義し、それをデリゲートに格納できるのが匿名メソッド・・・。

引数として渡された2つのint型整数の足した値を返す関数・・・。
それを格納するデリゲートを普通のデリゲートで定義すると、

// 名前空間の登録
using System;       // 共通データ型と基本クラス(System名前空間)

// デリゲートの定義.
delegate int AddDelegate(int a, int b); // 引数がint型のa, b, 戻り値がint型のメソッドを持つデリゲートAddDelegate.

// メインクラス
class MainClass // MainClassクラスの定義
{

    // メインメソッド
    static void Main()  // Mainメソッドの定義
    {

        // デリゲートの生成.
        AddDelegate add = new AddDelegate(Add); // Addを呼ぶAddDelegate型addを生成.

        // addが持つメソッドを実行.
        int result = add(10, 20);    // addに10と20を渡し, 結果をresultに格納.

        // 結果の出力.
        Console.WriteLine("result = " + result);    // resulの値を出力.

    }

    // aとbを足すメソッド.
    static int Add(int a, int b)
    {

        // aとbを足した値を返す.
        return a + b;   // a + bを返す.

    }

}

しかし、匿名メソッドを使うと、

<デリゲート型> <デリゲートオブジェクト> = delegate(<引数型> <引数名>, ...){

    <匿名メソッドで行う処理>

}

というような形になるので、

こんな感じ・・・。
実行の仕方は変わらない・・・。
そして、メソッドAddがなくなったのでちょっとすっきり・・・。

Sample/cs/AnonymousMethod/AnonymousMethod/src/AnonymousMethod at master · bg1bgst333/Sample · GitHub