systembankスタッフのブログ

システムバンクスタッフのブログです。

ラムダ式への道 その2

 匿名メソッドまたは匿名関数

C# 2.0からdelegate定義をしなくてもその場限りで使用するメソッド(関数)を作成できるようになりました。

それを匿名メソッド(匿名関数)と呼んでいます。

サンプル

前回のプログラムを匿名メソッドを利用して記述するとこんな感じになります。

こんな感じに

    delegate string SomeFunction(int value);
    class SomeClass
    {
        private SomeFunction _someFunction;
        public SomeClass(SomeFunction function)
        {
            _someFunction = function;
        }

        public string DoSomething(int value)
        {
            return _someFunction(value);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var some = new SomeClass(delegate (int v) { return (v * v).ToString(); });
        
            var value = 10;
            Console.WriteLine(some.DoSomething(value));
        }
    }

 SomeClassのコンストラクタ内に直接メソッドを記述しました。なので前回作成したDoSquareメソッドがなくなっています。

ここまでのまとめ

その場限りなのに関わらず、都度プライベートメソッドを作成することが必要でしたが不要になったことがメリットです。このことがのちのバージョンに効いてきます。

次回

次回こそはラムダ式そのものについて書きます。

お詫び

最近誤字が多くなってきている、済みません。

注意力が落ちているのが実感できます、年なのか?