ラムダ式と式本体構文は同じ?違いをやさしく解説!


C# を学び始めると、「ラムダ式」や「式本体構文(expression-bodied member)」という言葉が出てきます。どちらも => という記号(ラムダ演算子)を使うため、混乱しやすいポイントです。

この記事では、初心者の方に向けて ラムダ式と式本体構文の違いと使い分け を丁寧に解説します。


✅ ラムダ式(Lambda Expression)とは?

ラムダ式とは、名前のない関数(無名関数)を定義するための構文です。

たとえば、次のようなコードを見たことはありませんか?

Func<int, int, int> add = (x, y) => x + y;

これは、x と y という2つの引数を取り、その和を返す「ラムダ式」です。

  • (x, y):引数
  • =>:ラムダ演算子
  • x + y:式の本体(戻り値)

ラムダ式は 関数の“中身だけ”をその場で書ける便利な仕組みで、Func<> や Action<> と一緒に使われることが多いです。


✅ 式本体構文(Expression-bodied Member)とは?

C# 6以降、メソッドやプロパティを1行で書くための簡略記法として、「式本体構文」が導入されました。

public int Square(int x) => x * x;

これは、次のコードと同じ意味です:

public int Square(int x)
{
    return x * x;
}

式本体構文は、“すでに定義されたメソッドなどの処理を短く書くため”に使われます。メソッド、プロパティ、インデクサ、コンストラクタ、デストラクタなどにも使えます。


✅ ラムダ式と式本体構文の違いまとめ

項目ラムダ式式本体構文
用途無名関数の定義メンバー定義の簡略化
定義される対象関数(Func や Action)メソッド、プロパティなど
記述スタイル(x) => x + 1int Square(int x) => x * x;
戻り値式の値メソッド等の戻り値
よく使う場面LINQ、イベント、コールバック等シンプルな処理のクラスメンバー

✅ 実際に使ってみよう

1. ラムダ式の例

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

// 偶数だけを取り出す
var evenNumbers = numbers.Where(n => n % 2 == 0);

foreach (var num in evenNumbers)
{
    Console.WriteLine(num);  // 2, 4
}

2. 式本体構文の例

class Calculator
{
    public int Square(int x) => x * x;

    public string Greeting => "こんにちは!";
}

✅ よくある質問

Q. 両方とも => を使っているのはなぜ?

=> は「この値を返すよ」という意味を持つ記号です。

  • ラムダ式:その場で無名関数を返す
  • 式本体構文:関数の本体がこの式ですよと伝える

見た目は同じでも、目的と文脈が違うという点に注意しましょう。


✅ まとめ

  • ラムダ式は「無名関数」を定義する方法
  • 式本体構文は「クラスメンバーを省略して書く」ための構文
  • どちらも => を使うが、意味も使い方も異なる

最初は混乱して当然ですが、少しずつコードを書いて慣れていきましょう!


💡補足:なぜラムダという名前?

ラムダ(λ)は、数学のラムダ計算(lambda calculus)に由来します。無名関数を記述するための記号として世界中で使われています。

訪問数 3 回, 今日の訪問数 3回

C#,ラムダ式

Posted by hidepon