メソッド内メソッドを書く

C#にはLinqという便利な機能があり、これを使うとメッソドの中にメソッドを書くことができる。メソッドをわざわざ書くまでもないような小さな関数を書きたいときに超便利。

たとえば、2つの値の積をゲットしたい、ただし最小値は0以上としたいとする。

そうした関数をLinq式で書いてみる。これは汎用デリゲートというものらしい。下のコードではFuncで始まるコード。

  1.     Func<int, int, int> getXXX = (n1, n2) => n1 * n2 >= 0 ? n1 * n2 : 0;
  2.  
  3.     var n55= getXXX(5, 5); // 25
  4.     var n57= getXXX(5, -7); // 0


そのあとは、getXXX を普通の関数のように呼び出して値を得ることができる。

なにこれ、便利。

コメント

このブログの人気の投稿

varchar をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。