ラムダ式と式本体構文は同じ?違いをやさしく解説!
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 + 1 | int 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)に由来します。無名関数を記述するための記号として世界中で使われています。
ディスカッション
コメント一覧
まだ、コメントがありません