匿名メソッドでデリゲート

プログラミングC# 第6版 5.4


またも引き続きデリゲートの話です。

匿名メソッドというものが出てきました。関数名を持たない関数のことのようです。

つまり匿名メソッドを定義してデリゲート型の変数に代入した場合、その変数以外から匿名メソッドにアクセスすることは不可能ということだそうです。

実際に動作確認してみます。

まずは匿名メソッドを使わないデリゲートの確認です。

using System;

public delegate int CDelegate (int i);

class Program {
    public static int Foo (int i) {
        return i + 1;
    }
    
    static void Main () {
        CDelegate dobj = Foo;
        
        Console.WriteLine( dobj(1) );
    }
}
$ main
2

さてこれを匿名メソッドに置き換えてみます。

using System;

public delegate int CDelegate (int i);

class Program {
    static void Main () {
        CDelegate dobj = delegate(int i) {
            return i + 1;
        };
        
        Console.WriteLine( dobj(1) );
    }
}

Foo関数を削除し、delegateというキーワードを使って匿名メソッドを定義します。

色々と活用できそうですね。