C#のラムダ式とは?無名関数の基本と使いどころを初心者向けに徹底解説
生徒
「C#のラムダ式って、よく聞くけれど、何に使うものですか?難しそうで不安です。」
先生
「ラムダ式は、C#でとても便利な書き方で、関数を短く書ける機能なんだ。特に、ちょっとした処理をまとめて書きたいときに大活躍するよ。」
生徒
「関数を短く書けるってどういうことですか?関数ってMain()みたいに書くものじゃないんですか?」
先生
「そのとおり。けれど、名前を付けずに一時的に使う関数が必要なときもある。そのような関数を、ラムダ式という書き方で表現できるんだ。」
生徒
「名前がない関数ってことですか?」
先生
「そう。名前のない関数という意味で、無名関数と呼ばれているよ。では、基本から順に見ていこう。」
1. ラムダ式とは?
C#のラムダ式とは、プログラムの中で簡単に短く関数を記述できる表現方法のことです。通常の関数のように名前を付けず、その場で小さな処理を書くときにとても便利です。このように名前を持たない関数のことを無名関数といいます。無名とは「名前がついていない」という意味です。
ラムダ式は、引数と処理内容を矢印の記号 => でつないで書きます。矢印は「こうしたら」という意味の印のようなものと考えると分かりやすいです。C#では、下記のような形式になります。
(引数) => 処理内容
2. ラムダ式を使った簡単な例
例えば、ひとつの数値に対して、1を足して表示する簡単な処理を書いてみましょう。普通の関数で書くと次のようになります。
int AddOne(int x)
{
return x + 1;
}
しかし、ラムダ式を使うと同じ内容をとても短く書けます。
x => x + 1
このように、ラムダ式を使用すると、短い処理をよりシンプルに表現できます。これが、ラムダ式が多くの場面で活躍する理由です。
3. ラムダ式を実際に動かしてみよう
ラムダ式は、単体では動きません。下記のように変数に代入して実行します。ここでは、Funcという型を使っています。これは、関数の形を表すためのC#の機能です。
using System;
class Program
{
static void Main()
{
Func<int, int> addOne = x => x + 1;
int result = addOne(5);
Console.WriteLine(result);
}
}
実行結果:
6
この例では、addOneという変数にラムダ式を代入し、その変数を関数のように呼び出しています。「5を渡して6が返ってくる」という動きが確認できます。
4. ラムダ式の活用例
ラムダ式は、単に短く書けるだけでなく、処理をまとめて渡したい場合にも便利です。例えば、配列の中から特定の条件に合う数だけを取り出す場合でも、ラムダ式はとても役に立ちます。今後学ぶLINQでも、ラムダ式は中心となる書き方です。
int[] numbers = { 1, 2, 3, 4, 5 };
var even = numbers.Where(x => x % 2 == 0);
この例では、偶数だけを取り出すという処理をラムダ式でわかりやすく書いています。このように、ラムダ式は現代のC#プログラミングには欠かせない機能になっています。