C#でラムダ式を使用する方法

ラムダ式は、統合言語クエリ(LINQ)が利用可能になると同時に、.NET3.5で最初に導入されました。ラムダ式は匿名メソッドに似ていますが、はるかに柔軟性があります。ラムダ式を使用する場合、入力のタイプを指定する必要はありません。したがって、ラムダ式は、匿名メソッドを表すためのより短く、よりクリーンな方法を提供します。

この記事では、C#でラムダ式を使用する方法を見ていきます。この記事で提供されているコード例を使用するには、システムにVisual Studio2019がインストールされている必要があります。まだコピーをお持ちでない場合は、こちらからVisual Studio2019をダウンロードできます。 

VisualStudioでコンソールアプリケーションプロジェクトを作成します

まず、VisualStudioで.NETCoreコンソールアプリケーションプロジェクトを作成しましょう。Visual Studio 2019がシステムにインストールされていると仮定して、以下に概説する手順に従って、VisualStudioで新しい.NETCoreコンソールアプリケーションプロジェクトを作成します。

  1. Visual StudioIDEを起動します。
  2. 「新しいプロジェクトの作成」をクリックします。
  3. 「新規プロジェクトの作成」ウィンドウで、表示されたテンプレートのリストから「コンソールアプリ(.NETCore)」を選択します。
  4. [次へ]をクリックします。 
  5. 次に表示される[新しいプロジェクトの構成]ウィンドウで、新しいプロジェクトの名前と場所を指定します。
  6. [作成]をクリックします。

これらの手順に従うと、Visual Studio2019で新しい.NETCoreコンソールアプリケーションプロジェクトが作成されます。このプロジェクトを使用して、この記事の後続のセクションでC#ラムダ式を操作します。

ラムダ式の構造

基本的に、ラムダ式は宣言のないメソッドです。言い換えると、ラムダ式は、アクセス指定子または名前を持たないメソッドです。ラムダ式は、左側と右側の2つのセクションに分けることができます。左の部分は入力に使用され、右の部分は式の記述に使用されます。

C#でラムダ式を使用するための構文は次のとおりです。

(入力パラメーター)=>式またはステートメントブロック

ラムダ式には、式ラムダとステートメントラムダの2種類があります。式ラムダは、以下に示すように、左側の入力と右側の式で構成されます。

入力=>式;

ステートメントラムダは、以下に示すように、左側の入力と右側の一連のステートメントで構成されます。

入力=> {ステートメント};

C#でのラムダ式の例

ラムダ式の記述は簡単です。匿名メソッドからデリゲートキーワードとパラメータータイプを削除するだけです。デリゲートキーワードとパラメータタイプを使用する次の匿名メソッドについて考えてみます。

デリゲート(作成者a){return a.IsActive && a.NoOfBooksAuthored> 10; }

上記のステートメントは、以下のコードスニペットに示すようにラムダ式に変換できます。

(a)=> {a.IsActive && a.NoOfBooksAuthored> 10; }

上記のステートメントでaは、はパラメーターで=>あり、ラムダ演算子です。次のステートメントは式です。

a.IsActive && a.NoOfBooksAuthored> 10;

これは、コンソールウィンドウに1から9までの奇数を表示するラムダ式の別の例です。

リスト整数=新しいリスト{1、2、3、4、5、6、7、8、9};

foreach(int num in integers.Where(n => n%2 == 1).ToList())

{{

  Console.WriteLine(num);

}

パラメータがある場合とない場合のラムダ式

ラムダ式は、パラメーターなしにすることも、1つ以上のパラメーターを持つこともできます。次のコードスニペットは、パラメーターを持たないラムダ式を示しています。

()=> Console.WriteLine( "これはパラメーターのないラムダ式です");

ラムダ式は、1つ以上のパラメーターを持つこともできます。次のコードスニペットは、1つのパラメーターをラムダ式に渡す方法を示しています。

(a、numberOfBooksAuthored)=> a.NoOfBooksAuthored> = numberOfBooksAuthored;

以下のコードスニペットに示すように、ラムダ式でパラメーターのタイプを指定することもできます。

(a、int numberOfBooksAuthored)=> a.NoOfBooksAuthored> = numberOfBooksAuthored;

中括弧を使用して、ラムダ式で複数のステートメントを指定することもできます。これは、次のコードスニペットに示されています。 

(a、10)=>

{{

   Console.WriteLine( "これはラムダ式の例です

                      複数のステートメントで ");

   a.NoOfBooksAuthored> = 10を返します。

}

C#のステートメントラムダ

ステートメントラムダは、式ラムダと同じ構文を使用します。違いは、演算子の右側に式を配置する代わりに、ステートメントlambdaに1つ以上のステートメントを含むコードブロックがあることです。

次のコードスニペットは、ステートメントラムダを利用して、コンソールウィンドウに1から9までの偶数を表示する方法を示しています。

int [] integers = new [] {1、2、3、4、5、6、7、8、9};

foreach(int i in integers.Where(x =>

{{

   if(x%2 == 0)

         trueを返します。

    falseを返します。

 }

 ))

Console.WriteLine(i);

ラムダ式は、.NETおよび.NET Coreの優れた機能であり、匿名メソッドをより短い方法で表現できます。ラムダ式は、ゼロパラメーターまたは1つ以上のパラメーターを持つことができます。ラムダ式をFunc、Action、またはPredicateデリゲートに割り当てることもできます。ここでの今後の記事では、ラムダ式のこれらの機能やその他の機能について説明します。また、ラムダ式とLINQ、および非同期ラムダを操作する方法についても説明します。

C#でさらに多くのことを行う方法:

  • C#で抽象クラスとインターフェイスを使用する場合
  • C#でAutoMapperを操作する方法
  • C#でラムダ式を使用する方法
  • C#でAction、Func、およびPredicateデリゲートを操作する方法
  • C#でデリゲートを操作する方法
  • C#で簡単なロガーを実装する方法
  • C#で属性を操作する方法
  • C#でlog4netを操作する方法
  • C#でリポジトリデザインパターンを実装する方法
  • C#でリフレクションを操作する方法
  • C#でfilesystemwatcherを操作する方法
  • C#でレイジー初期化を実行する方法
  • C#でMSMQを操作する方法
  • C#で拡張メソッドを操作する方法
  • C#でラムダ式を使用する方法
  • C#でvolatileキーワードを使用する場合
  • C#でyieldキーワードを使用する方法
  • C#でポリモーフィズムを実装する方法
  • C#で独自のタスクスケジューラを構築する方法
  • C#でRabbitMQを操作する方法
  • C#でタプルを操作する方法
  • C#での仮想メソッドと抽象メソッドの調査