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)