Function 式
更新 : 2007 年 11 月
ラムダ式を定義するパラメータおよびコードを宣言します。
Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] ) _
expression
指定項目
parameterlist
省略できます。このプロシージャのパラメータを表すローカル変数名のリスト。リストが空の場合もパラメータが必要です。「パラメータの一覧」を参照してください。expression
必ず指定します。1 つの式。式の値により、関数の型、および関数が呼び出されたときに返される値が決まります。
解説
ラムダ式とは、計算を実行して単一の値を返す、名前を持たない関数です。デリゲート型を使用できるすべての場所でラムダ式を使用できますが、RemoveHandler の引数としては使用できません。デリゲートの詳細、およびデリゲートを含むラムダ式の使用については、「Delegate ステートメント」および「厳密でないデリゲート変換」を参照してください。
ラムダ式の構文
ラムダ式の構文は、標準関数の構文に似ています。相違点を次に示します。
ラムダ式には名前がありません。
ラムダ式では、Overloads や Overrides などの修飾子を使用できません。
ラムダ式では、As 句を使用して関数の戻り値の型を指定することはできません。代わりに、ラムダ式の本体を評価した値から型が推論されます。たとえば、ラムダ式の本体が Where cust.City = "London" の場合、その戻り値の型は Boolean になります。
関数の本体は、ステートメントではなく式である必要があります。本体を関数プロシージャへの呼び出しで構成することはできますが、サブ プロシージャへの呼び出しは指定できません。
Return ステートメントはありません。関数によって返される値は、関数の本体に指定された式の値です。
End Function ステートメントはありません。
すべてのパラメータは、データ型が指定されているか推論される必要があります。
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))
ラムダ式は、統合言語クエリ (LINQ: Language-Integrated Query) において多くのクエリ演算子の基礎になっており、メソッド ベースのクエリで明示的に使用できます。次の例では、典型的な 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)」を参照してください。標準クエリ演算子の詳細については、「標準クエリ演算子の概要」を参照してください。