[C#]ラムダ式

C# の ラムダ式(Lambda Expression) は、「無名関数(名前のない関数)」を簡潔に書くための構文です。
短い処理を一時的に使いたいときに便利で、ActionFunc などのデリゲート型に直接渡すことができます。

参考記事
ラムダ式 - ラムダ式と匿名関数 - C# reference
匿名関数と式形式のメンバーを作成するために使われる C# のラムダ式。

基本構文

C#
(parameters) => { 処理内容 }
  • parameters: 引数(ない場合は ()
  • =>: 「〜を実行して」という意味の矢印演算子
  • { 処理内容 }: 実際に実行されるコード

例1:引数なしのラムダ式

C#
Action greet = () => Console.WriteLine("Hello, World!");
greet();  // 出力: Hello, World!

上記のラムダ式は「Console.WriteLine("Hello, World!"); を実行する無名関数」を greet に代入しています。

例2:引数ありのラムダ式

C#
Func<int, int, int> multiply = (x, y) => x * y;
Console.WriteLine(multiply(3, 4));  // 出力: 12

ここでは (x, y) が引数で、x * y が返り値です。
Func<int, int, int> は「int型を2つ受け取り、int型を返す関数」という意味になります。

例3:ラムダ式をその場で使う

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

// 条件に一致する要素を探す(Findにラムダ式を直接渡す)
int result = numbers.Find(n => n > 3);
Console.WriteLine(result);  // 出力: 4

この n => n > 3 は「n が 3 より大きいか」を判定する関数です。
つまり、Find に「条件式そのもの」を渡しているイメージになります。

省略のルール

ここまでもしれっと省略してきましたが、1行で処理が終わる場合は {}return を省略できます。

C#
Func<int, int> square = x => x * x;

複数行書きたい場合は {} をつけ、 return を明示します。

C#
Func<int, int> squareVerbose = x =>
{
    int result = x * x;
    return result;
};

おわりに

ラムダ式は 短く・読みやすく・柔軟 にコードを書くための非常に強力な構文です。
慣れてくると、「小さな処理をサッと書く」ための強い味方になります。

コメント

タイトルとURLをコピーしました