C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のラムダ式とは?基本構文から使い方まで徹底解説

ラムダ式とは

ラムダ式(Lambda Expression)は、匿名メソッドをより簡潔に記述するための手法です。匿名メソッドとラムダ式はどちらもメソッドの実装をインラインで定義できますが、匿名メソッドではパラメータの型や戻り値の型を明示的に指定する必要があります。一方、ラムダ式では型推論によってこれらを省略できるため、コードを大幅に読みやすく、簡潔にできます。

ラムダ式の2つの形式

ラムダ式には、本体の構成によって次の2つの形式があります。

  • 式形式のラムダ(Expression Lambda):本体が単一の式で構成される
    (入力パラメータ) => 式
  • ステートメント形式のラムダ(Statement Lambda):本体がステートメントブロックで構成される
    (入力パラメータ) => { ステートメントのシーケンス }

デリゲート型への変換

すべてのラムダ式は、任意のデリゲート型に変換できます。変換先のデリゲート型は、ラムダ式のパラメータの型と戻り値の型によって決まります。戻り値がない場合は Action 系のデリゲート型へ、戻り値がある場合は Func 系のデリゲート型へ変換できます。

static void Main(string[] args)
{
    Func<int, int> square = x => x * x;
    Console.WriteLine(square(5));
    Console.ReadLine();
}

この例では、引数を受け取りその2乗を返すラムダ式を Func<int, int> 型の変数 square に代入しています。square(5) の結果は「25」と出力されます。

式形式のラムダの記述例

=> 演算子の右側に式を持つラムダ式は「式形式のラムダ」と呼ばれ、その式の評価結果を返します。基本的な書き方は以下のとおりです。

Action line = () => Console.WriteLine();
Func<double, double> cube = x => x * x * x;
Func<int, int, bool> testForEquality = (x, y) => x == y;
Func<int, string, bool> isTooLong = (int x, string s) => s.Length > x;
  • () => Console.WriteLine():引数なしで処理を実行する例
  • x => x * x * x:引数の3乗を返す例
  • (x, y) => x == y:2つの引数が等しいかを判定する例
  • (int x, string s) => s.Length > x:パラメータの型を明示的に指定した例

C# 7.0以降でのタプルのサポート

C# 7.0 以降では、言語レベルでタプルが組み込みサポートされました。これにより、タプルをラムダ式の引数として渡すことや、ラムダ式の戻り値としてタプルを返すことが可能になっています。複数の値をまとめて扱いたい場合に便利です。

ラムダ式を使用する際の注意点・制約

  • ラムダ式内で宣言された変数は、外側のメソッドからは参照できません。
  • ラムダ式は、外側のメソッドの inrefout パラメータを直接キャプチャすることはできません。
  • ラムダ式内の return ステートメントは、ラムダ式自体を抜けるだけで、外側のメソッドを終了させることはありません。
  • ジャンプ先がラムダ式ブロックの外側にある gotobreakcontinue ステートメントを含めることはできません。逆に、ブロックの外側にあるジャンプステートメントのターゲットがブロック内である場合もコンパイルエラーとなります。

これらのルールを理解しておくことで、ラムダ式を安全かつ効果的に活用できます。LINQ やイベントハンドラなど、C# のさまざまな場面でラムダ式は頻繁に使われるため、基本構文と制約事項をしっかり押さえておきましょう。

  1. IPアドレスとは?仕組み・種類・確認方法をわかりやすく解説

    IPアドレス(Internet Protocol address)とは、ネットワークに接続された機器を識別するための番号のことです。IPアドレスを持つことで、デバイスはインターネットに代表されるIPベースのネットワーク上で、他のデバイスと通信できるようになります。 IPアドレスの見た目 一般的なIPアドレスは、次のような形式で表記されます。 151.101.65.121 また、次のようにアルファベットを含む形式のIPアドレスを目にすることもあります。 2001:4860:4860::8844 IPアドレスの役割と仕組み IPアドレスは、インターネット上のネットワーク機器に対して「身元」を与える

  2. Windows 11 SEとは?教育向けOSの特徴・入手方法・対応アプリを徹底解説

    ChromebookとChrome OSが教育市場を大きく席巻する中、Microsoftは長年にわたりこの分野への本格参入を模索してきました。その切り札となるのが「Windows 11 SE」です。このOSはK-8(幼稚園〜中学校段階)の教室を想定して設計されており、使いやすさ、高いセキュリティ、そして低価格ながら性能が限られたPCへの適合性を重視しています。開発にあたってMicrosoftは、教育者、学校のIT担当者、管理者と緊密に連携しました。 Windows 11 SEは、同OS専用に設計された特別なデバイス上で動作することを前提としています。その代表格が、249ドルから提供されるMi