Function 式 (Visual Basic)

関数としてのラムダ式を定義するパラメーターおよびコードを宣言します。

Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] )
  [ statements ]
End Function

指定項目

語句

定義

parameterlist

省略可能です。このプロシージャのパラメーターを表すローカル変数名のリスト。リストが空の場合もパラメーターが必要です。「パラメーターの一覧 (Visual Basic)」を参照してください。

expression

必ず指定します。1 つの式。式の型は関数の戻り値の型です。

statements

必ず指定します。Return ステートメントを使用して値を返すステートメントの一覧です (「Return ステートメント (Visual Basic)」を参照)。返される値の型は、関数の戻り値の型です。

解説

ラムダ式とは、計算を実行して値を返す、名前を持たない関数です。デリゲート型を使用できるすべての場所でラムダ式を使用できますが、RemoveHandler の引数としては使用できません。デリゲートの詳細、およびデリゲートを含むラムダ式の使用については、「Delegate ステートメント」および「厳密でないデリゲート変換 (Visual Basic)」を参照してください。

ラムダ式の構文

ラムダ式の構文は、標準関数の構文に似ています。相違点を次に示します。

  • ラムダ式には名前がありません。

  • ラムダ式では、Overloads や Overrides などの修飾子を使用できません。

  • ラムダ式では、As 句を使用して関数の戻り値の型を指定することはできません。代わりに、単一行のラムダ式の本体を評価した値、または複数行のラムダ式の戻り値から型が推論されます。たとえば、単一行のラムダ式の本体が Where cust.City = "London" の場合、その戻り値の型は Boolean になります。

  • 単一行のラムダ式の本体は、ステートメントではなく式である必要があります。本体を関数プロシージャへの呼び出しで構成することはできますが、サブ プロシージャへの呼び出しは指定できません。

  • すべてのパラメーターは、データ型が指定されているか推論される必要があります。

  • Optional パラメーターと ParamArray パラメーターは使用できません。

  • ジェネリック パラメーターは使用できません。

使用例

単純なラムダ式を作成する 2 とおりの方法を次の例に示します。最初の方法では、Dim を使用して関数の名前を提要します。関数を呼び出すには、パラメーターの値を指定します。

Dim add1 = Function(num As Integer) num + 1
' The following line prints 6.
Console.WriteLine(add1(5))

または、関数の宣言と実行を同時に行うことができます。

Console.WriteLine((Function(num As Integer) num + 1)(5))

以下は、引数をインクリメントし、その値を返すラムダ式の例です。この例では、ラムダ式関数の単一行と複数行の両方の構文を示しています。その他の例については、「ラムダ式 (Visual Basic)」を参照してください。

Dim increment1 = Function(x) x + 1
Dim increment2 = Function(x)
                     Return x + 2
                 End Function

' Write the value 2.
Console.WriteLine(increment1(1))

' Write the value 4.
Console.WriteLine(increment2(2))

ラムダ式は、統合言語クエリ (LINQ) において多くのクエリ演算子の基礎になっており、メソッド ベースのクエリで明示的に使用できます。次の例では、典型的な LINQ クエリと、それに続いてクエリのメソッド形式への変換を示します。

Dim londonCusts = From cust In db.Customers
                       Where cust.City = "London"
                       Select cust

' This query is compiled to the following code:
Dim londonCusts = db.Customers.
                  Where(Function(cust) cust.City = "London").
                  Select(Function(cust) cust)

クエリ メソッドの詳細については、「クエリ (Visual Basic)」を参照してください。標準クエリ演算子の詳細については、「標準クエリ演算子の概要」を参照してください。

参照

関連項目

Function ステートメント (Visual Basic)

If 演算子 (Visual Basic)

概念

ラムダ式 (Visual Basic)

Visual Basic の演算子および式

値の比較 (Visual Basic)

Boolean 式 (Visual Basic)

厳密でないデリゲート変換 (Visual Basic)

その他の技術情報

Visual Basic におけるステートメント