【C#】ラムダ式とは?書き方と活用法を解説

C#を学んでいると、「ラムダ式」という言葉を目にすることがあるかと思います。最初は少し難しそうに感じるかもしれませんが、実はラムダ式を使うことで、コードをより簡潔に、そして読みやすく各ことができるようになります。

本記事では、C#におけるラムダ式の基本的な書き方から、応用的な使い方までをわかりやすく解説します。これを読めば、ラムダ式が持つ便利な機能を理解し、実践に活かせるようになるでしょう。

初心者の方でも安心して読み進められるように、具体的なコード例を交えながら進めていきますので、ぜひ最後までご覧ください。

ラムダ式とは?

ラムダ式とは、C#で無名メソッド(名前のないメソッド)を簡潔に表現するための構文です。通常のメソッドは名前があり、明確に定義されていますが、ラムダ式では一時的に使う関数やメソッドを簡潔に記述できるため、コードの可読性を向上させることができます。

ラムダ式は、主にLINQと組み合わせて使用され、データのフィルタリングや集計処理を行う際に非常に役立ちます。C#では、ラムダ演算子 => を使用して、引数と戻り値の間に処理を記述します。

例えば、次のようなシンプルなラムダ式があります。

x => x * x;

この例では、引数 x を受け取り、その平方を計算して返す処理が簡潔に書かれています。ラムダ式を使うことで、短い関数や一時的な処理を効率的に記述することが可能です。

ラムダ式の基本構文

ラムダ式の基本的な書き方は、無名メソッドと似ていますが、よりシンプルでコンパクトに記述することができます。ラムダ式の基本構文は次の通りです。

(引数リスト) => 式またはステートメントブロック

引数リストには、メソッドの引数のように、型と変数名をカンマで区切って指定します。その後に => を書き、右側に処理の内容を記述します。例えば、2つの引数を受け取ってその合計を返すラムダ式は以下のようになります。

(int x, int y) => x + y;

このラムダ式は、x とy という2つの整数を受け取り、その和を返すという内容です。このようにシンプルな計算であれば、式を一行で書くことができます。

引数の型を省略した構文

C#では、ラムダ式の引数の型を省略することも可能です。コンパイラが引数の型を自動的に推論するため、以下のように書くことができます。

(x, y) => x + y;

引数の型が明確である場合、型を省略しても可読性を損なうことはなく、より簡潔に書ける点がメリットです。

ステートメントブロックを使ったラムダ式

一行では表現できない複雑な処理を行いたい場合は、ステートメントブロック {} を使用して、複数のステートメントを含めることができます。この場合、return 文を明示的に書く必要があります。

(int x, int y) => {
    int result = x + y;
    return result;
};

この構文を使うことで、ラムダ式内でより複雑な処理を行うことが可能になります。

複雑なラムダ式の書き方

ラムダ式は単純な関数定義だけでなく、より複雑な処理を記述するためにも活用されます。ここでは、複数のステートメントを含むラムダ式や変数キャプチャを使用したラムダ式の書き方について解説します。

複数ステートメントのラムダ式

基本的なラムダ式では、1行の処理を記述することが一般的ですが、複数の処理を含む場合はブロック構文を使用します。ブロック構文では、{} を用いて複数のステートメントを囲みます。

例えば、2つの整数の加算と、その結果を表示するラムダ式は次のように書けます。

Action<int, int> addAndPrint = (x, y) => {
    int sum = x + y;
    Console.WriteLine($"Sum: {sum}");
};

この例では、addAndPrint というラムダ式が2つの引数を受けとり、加算した結果をコンソールに出力します。このように、ブロック構文を使うことで、複数の処理をまとめて記述することができます。

変数キャプチャ

ラムダ式では、外部の変数を参照することも可能です。これを「変数キャプチャ」と呼びます。外部変数をキャプチャすることで、ラムダ式内でその変数を利用することができます。

以下の例では、外部の変数 multiplier を使用して、指定された数値を倍にするラムダ式を作成しています。

int multiplier = 2;
Func<int, int> multiply = n => n * multiplier;

ここで、multiply ラムダ式は引数 n を受け取り、 multiplier を掛け算して返します。ラムダ式が定義された時点でのmultiplier の値がキャプチャされるため、multiplier を変更すると、その変更が反映される点に注意が必要です。

まとめ

本記事では、C#におけるラムダ式の基本から応用までを幅広く解説しました。ラムダ式は、無名メソッドを簡潔に表現するための強力なツールであり、特にLINQとの組み合わせでその真価を発揮します。

コメント