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)」を参照してください。標準クエリ演算子の詳細については、「標準クエリ演算子の概要」を参照してください。

参照

概念

ラムダ式

Visual Basic の演算子および式

ステートメントの概要

値の比較

Boolean 式

厳密でないデリゲート変換

参照

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

If 演算子