C#のラムダ式の戻り値と引数を柔軟に扱う方法を完全解説!初心者でもわかる基本ガイド
生徒
「C#のラムダ式って、引数とか戻り値があるって聞いたんですが、正直よくわかりません…」
先生
「ラムダ式は、受け取る値(引数)と、返す値(戻り値)をとても柔軟に扱えるのが特徴ですよ。」
生徒
「柔軟ってどういう意味ですか?普通のメソッドと何が違うんですか?」
先生
「では、パソコンを触ったことがない人でもイメージできるように、基礎から順番に説明していきましょう。」
1. ラムダ式とは何かを超かんたんに説明
C#のラムダ式とは、「その場で使える小さな処理」を表す書き方です。 プログラミングが初めての人は、「処理を箱に入れて、すぐ使えるようにしたもの」と考えると理解しやすくなります。
例えば、「数字を受け取って、少し計算して、結果を返す」という流れを、 わざわざ長い名前のメソッドとして作らなくても、ラムダ式なら一行で書けます。 このときに重要になるのが、引数と戻り値です。
2. 引数と戻り値とは?日常生活でたとえる
まず言葉の説明をします。 引数(ひきすう)とは、「処理に渡す材料」です。 戻り値(もどりち)とは、「処理が終わって返ってくる結果」です。
これは自動販売機にとてもよく似ています。 お金を入れるのが引数、ボタンを押して出てくるジュースが戻り値です。 ラムダ式も同じで、何かを受け取って、何かを返す仕組みになっています。
3. 引数が1つで戻り値があるラムダ式
一番基本的な形は、「1つの値を受け取って、1つの結果を返す」ラムダ式です。 数字を受け取って2倍にする処理を見てみましょう。
Func<int, int> doubleNumber = x => x * 2;
int result = doubleNumber(5);
Console.WriteLine(result);
10
ここで使っているFuncは、「戻り値があるデリゲート」です。
難しく聞こえますが、「計算して結果を返す箱」くらいの理解で大丈夫です。
最初の
4. 引数が複数あるラムダ式
ラムダ式は、引数を複数持つこともできます。 例えば、「2つの数字を受け取って足し算する」処理です。
Func<int, int, int> add = (a, b) => a + b;
int sum = add(3, 7);
Console.WriteLine(sum);
10
このように、引数が増えても書き方はほとんど変わりません。 カッコの中に材料を並べて書くだけです。 「たくさん受け取って、1つ返す」という形も簡単に作れるのが特徴です。
5. 戻り値がないラムダ式(Action)
ラムダ式は、必ずしも戻り値が必要なわけではありません。 「表示するだけ」「記録するだけ」など、結果を返さない処理もあります。 その場合はActionを使います。
Action<string> showMessage = message =>
{
Console.WriteLine(message);
};
showMessage("こんにちは、C#のラムダ式!");
こんにちは、C#のラムダ式!
Actionは、「引数はあるけれど戻り値はない処理」を表します。 画面に表示する、ログを書く、といった用途でよく使われます。
6. 引数の型を省略できる理由
ラムダ式では、引数の型を省略できる場合があります。 これはC#が前後の情報から自動で判断してくれるためです。 この仕組みを型推論と呼びます。
型推論のおかげで、コードが短くなり、読みやすくなります。 初心者のうちは「省略できるんだな」くらいの理解で問題ありません。
7. ラムダ式を使うと何がうれしいのか
ラムダ式の戻り値と引数を柔軟に扱えるようになると、 処理の流れがとてもシンプルになります。 「この場で、この計算だけしたい」というときに、すぐ書けるのが最大のメリットです。
特にC#では、デリゲートと組み合わせることで、 プログラムの部品を自由に差し替えられるようになります。 これは後々、大きなプログラムを書くときにとても役立ちます。