ラムダ式

C#入門⑤ ラムダ式

ラムダ式とは?

ラムダ式とは、簡潔に書ける無名メソッド のことです。
C#ではデリゲートやLINQと組み合わせてよく使われます。

記法は以下の通りです。

(引数) => 式または文ブロック

基本的な例

Func<int, int> square = x => x * x;
Console.WriteLine(square(5)); // 25

ここでは x => x * x がラムダ式で、x を受け取り x * x を返す関数を表しています。

複数引数のラムダ式

Func<int, int, int> add = (a, b) => a + b;
Console.WriteLine(add(3, 4)); // 7

文ブロックを使う場合

処理が複数行にわたる場合は { } で囲みます。

Func<int, int, int> multiply = (a, b) =>
{
    int result = a * b;
    return result;
};

Console.WriteLine(multiply(3, 5)); // 15

Actionデリゲートとの組み合わせ

戻り値を持たない場合は Action を使います。

Action<string> greet = name => Console.WriteLine("Hello, " + name);
greet("Taro"); // Hello, Taro

LINQとラムダ式

LINQと組み合わせることで、コレクション操作を簡潔に書けます。

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

        var evenNumbers = numbers.Where(n => n % 2 == 0);

        foreach (int n in evenNumbers)
        {
            Console.WriteLine(n); // 2, 4
        }
    }
}

まとめ

  • ラムダ式は「無名メソッド」を簡潔に書くための構文
  • Func は戻り値あり、Action は戻り値なしで利用できる
  • 複数引数や文ブロックもサポート
  • LINQと組み合わせて使うと強力