C# ラムダ式のサンプル

C#のラムダ式のサンプルです。

目次

仕組み ラムダ式とは
サンプル 匿名メソッドからラムダ式に変更する
  戻り値なしの場合でAction型の変数を使用する
  戻り値ありの場合でFunc型の変数を使用する

ラムダ式とは

変数 = [データ型] 引数 [,データ型 引数]...  -> メソッドの処理;
変数 = [データ型] 引数 [,データ型 引数]...  -> 
   {
 メソッドの処理;
     return 値;
    };
  • 矢印(->)の左側に引数を指定します。データ型は省略可能です。
  • 矢印(->)の右側に引数を受け取って行うメソッドの処理を記述します。
  • デリゲートに匿名メソッドを登録する代わりでラムダ式を使用します。
  • 匿名メソッドをラムダ式に変更することができます。
  • Action型またはFunc型の変数を使用する場合はデリゲートの宣言は不要です。

匿名メソッドからラムダ式に変更する

匿名メソッドからラムダ式に変更することができます。

1.匿名メソッド

using System;

delegate void delegate1(string name1);

class Test1
{
	public static void Main()
	{
		delegate1 d1 =  (string a) =>{ Console.WriteLine(a + "です");};
		d1("青"); // 青です
	}
}

9行目は、メソッド名がない匿名メソッドです。

2.ラムダ式

上記の匿名メソッドをラムダ式に変更したサンプルです。

using System;

delegate void delegate1(string name1);

class Test1
{
	public static void Main()
	{
		delegate1 d1 =  a => Console.WriteLine(a + "です");
		d1("青"); // 青です
	}
}

9行目がラムダ式です。デリゲートに匿名メソッドを登録しています。
矢印の左側のaが引数で、矢印の右側が引数を受け取って行う処理です。

 

戻り値なしの場合でAction型の変数を使用する

Action型の変数にセットする場合、デリゲートの宣言が不要になります。
戻り値なしの時に使用します。

Action型の変数で引数なし、戻り値なし

using System;

class Test1
{
	public static void Main()
	{
		Action d1 =  () => Console.WriteLine("こんにちは");
		d1(); // こんにちは
	}
}

7行目は、匿名メソッドで引数なしかつ戻り値なしです。

Action型の変数で引数あり、戻り値なし

using System;

class Test1
{
	public static void Main()
	{
		Action<string> d1 =  a => Console.WriteLine(a + "です");
		d1("青"); // 青です
	}
}

7行目は、匿名メソッドで引数ありで戻り値なしです。
このAction<string>のstringは引数のデータ型を指します。

 

戻り値ありの場合でFunc型の変数を使用する

Func型の変数にセットする場合、デリゲートの宣言が不要になります。
戻り値ありの時に使用します。

Func型の変数で引数なし、戻り値あり

using System;

class Test1
{
	public static void Main()
	{
		Func<int> d1 = () => {
			return 2 * 3;
		};
		Console.WriteLine(d1()); // 6
	}
}

7行目は、匿名メソッドで引数なしで戻り値ありです。
このFunc<int>のintは戻り値のデータ型を指します。

Func型の変数で引数あり、戻り値あり

using System;

class Test1
{
	public static void Main()
	{
		Func<int,int,int> d1 = (a,b) => {
			return a * b;
		};
		Console.WriteLine(d1(2,3)); // 6
	}
}

7行目は、匿名メソッドで引数ありで戻り値ありです。
このFunc<int,int,int>の最初のint2つは引数で、3つめは戻り値のデータ型を指します。

関連の記事

C# デリゲートのサンプル

△上に戻る