C#_Func<T, TResult> ( ラムダ式 ) 02

デリゲートの書き方変遷。ただのソースコピペ。

 

従来

 

    FuncDelegate function = new FuncDelegate(hoge);
   
    delegate int FuncDelegate(int a);
   
    private int hoge(int a)
    {
      return a * a;
    } 

 function(10); で 100 が返る。

 

C# 2.0 以降

 new を用いずにかけるようになった。

    FuncDelegate function = hoge;

 

 

Func<T> ・ Action<T> を利用

 

     Func<int, int> function = new Func<int, int>(hoge);
   
    private int hoge(int a)
    {
      return a * a;
    }

 

 

匿名メソッドを利用

呼び出し元が一つである場合 ( 再利用されない ) は、
メソッドとして記述せずに、匿名メソッドで記述したほうが
コードの可読性が高くなる。

    Func<int, int> function = delegate(int a)
    {
        return a * a;
    }

 

 

ラムダ式を用いた匿名メソッドを利用

 式形式

     Func<int, int> function = (a) => a * a;

引数が 1 つの場合 → 引数名 => ( 実装 );
引数が複数の場合  → (引数名1, 引数名2, ...) => ( 実装 );
引数がない場合     → ( ) => ( 実装 );

 

ステートメント形式

    Func<int, int> function = (a) =>
    {
        return a * a;
    }

式が複数行にわたるならこっち。

 

 

こちらから。
https://www.ipentec.com/document/csharp-rewriting-delegate-and-lambda-expression

以上。