Function 式 (Visual Basic)

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

構文

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

指定項目

用語 定義
parameterlist 任意。 このプロシージャのパラメーターを表すローカル変数名のリスト。 リストが空の場合でも、かっこが存在する必要があります。 「パラメーター リスト」を参照してください。
expression 必須です。 単一の式。 式の型は、関数の戻り値の型です。
statements 必須です。 Return ステートメントを使用して値を返すステートメントのリスト。 (「Return ステートメント」を参照してください。)戻される値の型は、関数の戻り値の型です。

Remarks

ラムダ式は、値を計算して返す、名前を持たない関数です。 ラムダ式は、デリゲート型を使用できる場所であればどこでも使用できます。ただし、RemoveHandler の引数として使用することはできません。 デリゲートの詳細と、デリゲートでのラムダ式の使用の詳細については、「Delegate ステートメント」と「厳密でないデリゲート変換」をご覧ください。

ラムダ式の構文

ラムダ式の構文は、標準の関数の構文に似ています。 相違点は、次のとおりです。

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

  • ラムダ式には、OverloadsOverrides などの修飾子を含めることはできません。

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

  • 単一行のラムダ式の本体は、ステートメントではなく、式でなければなりません。 本体は、関数プロシージャの呼び出しで構成できますが、サブ プロシージャの呼び出しでは構成できません。

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

  • 省略可能なパラメーターと Paramarray パラメーターは使用できません。

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

例 1

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

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

例 2

別の方法として、関数の宣言と実行を同時に行うこともできます。

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

例 3

次の例は、引数をインクリメントして値を返すラムダ式です。 この例は、関数の単一行および複数行のラムダ式の構文を示しています。 その他の例については、「ラムダ式」を参照してください。

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))

例 4

ラムダ式は、統合言語クエリ (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)

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

関連項目