ラムダ式

 デリゲート、匿名メソッドとみてきましたが、匿名メソッドを使ってメソッドを定義せずに直接処理内容をデリゲートに設定できることを確認しました。ここではC#3.0で追加されたラムダ式を見てみましょう。ラムダ式を使うことで匿名関数を簡単に書くことができます。ラムダ式はLINQクエリ式を記述するときに便利です。

 ラムダ式は次のように定義します。

ラムダ式の定義
(引数リスト) => 処理の定義;

○ プロジェクト

 プロジェクトを作成して確認してみましょう。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 LambdaTest

サンプルダウンロード

○ 作成の準備

 「AnonymousTest」プロジェクトを修正して作成しましょう。AnonymousTestフォルダーをコピーして、作成するプロジェクト名にフォルダー名を変更してください。

○ プログラム

 匿名メソッドの部分をラムダ式に書き換えてみましょう。

Program.cs

  1. switch(menunum)
  2. {
  3.  case "1":
  4.   //加算メソッドをデリゲートにセット
  5.   calc = (dt1, dt2) => Console.WriteLine("足し算の結果は" + (dt1 + dt2) + "です。");
  6.   break;
  7.  case "2":
  8.   //減算メソッドをデリゲートにセット
  9.   calc = (dt1, dt2) => Console.WriteLine("引き算の結果は" + (dt1 - dt2) + "です。");
  10.   break;
  11.  case "9":
  12.   //加算・減算メソッドをデリゲートにセット
  13.   calc = (dt1, dt2) => Console.WriteLine("足し算の結果は" + (dt1 + dt2) + "です。");
  14.   calc += (dt1, dt2) => Console.WriteLine("引き算の結果は" + (dt1 - dt2) + "です。");
  15.   break;
  16.  default:
  17.   return;
  18. }

○ 解説

 53、57、61、62行目でラムダ式を指定する方法に変更しました。もし、引数を必要としない場合は「() => 処理;」のように記述します。

前へ