Table of Contents
はじめに
C#では「ラムダ式(lambda expression)」というコーディング記法があります。初めて見ると戸惑う方が多いですが、実はとても便利でコードをスッキリ書ける機能です。
この記事では、C#のラムダ式の基本を解説します。
ラムダ式とは?
ラムダ式は、名前のない関数(匿名関数)を簡単に書くための記法です。
書き方は以下のようになります。
(引数) => 式または処理
例:x => x * 2
上記は「xを受け取って、xを2倍にして返す」という意味です。
(ちなみに、=>
は矢印のように見えるため、アロー演算子と呼ばれます。)
基本の使い方
- シンプルな例
Func<int, int> doubleFunc = x => x * 2;
Console.WriteLine(doubleFunc(5)); // 出力: 10
Func<int, int>
は「intを受け取ってintを返す関数」を表します。
- 複数引数の例
Func<int, int, int> addFunc = (a, b) => a + b;
Console.WriteLine(addFunc(3, 4)); // 出力: 7
- ステートメント(複数行)の例
Action<string> greet = name =>
{
var message = $"Hello, {name}!";
Console.WriteLine(message);
};
greet("Alice"); // 出力: Hello, Alice!
Action<string>
は「stringを受け取って戻り値なし(void型)の関数」を表します。
ラムダ式が活躍する場面
- LINQとの組み合わせ
var 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
}
- イベントの登録
button.Click += (sender, e) => Console.WriteLine("ボタンがクリックされました!");
- ソート処理
var people = new List<string> {"Charlie", "Alice", "Bob"};
people.Sort((a, b) => a.CompareTo(b));
注意点
- キャプチャに注意
ラムダ式内では外側の変数を参照できますが、寿命やスレッドの問題に注意が必要です。
例:
int count = 0;
Action increment = () => count++;
increment();
Console.WriteLine(count); // 出力: 1
まとめ
- ラムダ式は「簡単に書ける匿名関数」
Func
とAction
を組み合わせて使う- LINQ、イベント、ソートなどで大活躍する
- 外側の変数のキャプチャには注意する