共用方式為


函數表示式 (Visual Basic)

宣告定義函式 Lambda 表達式的參數和程式代碼。

語法

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

組件

術語 定義
parameterlist 選擇性。 代表此程序參數的局部變數名稱清單。 即使清單是空的,括弧也必須存在。 請參閱 參數清單
expression 必須的。 單一表達式。 表達式的類型是函式的傳回型別。
statements 必須的。 使用 Return 語句傳回值的語句清單。 (請參閱 Return 語句。傳回之值的型別是函式的傳回型別。

備註

Lambda 運算式是沒有名稱的函式,可計算並傳回值。 您可以在任何位置使用 Lambda 表達式,但做為 的 RemoveHandler自變數除外。 如需委派的詳細資訊,以及搭配委派使用 Lambda 表達式,請參閱 委派語句寬鬆委派轉換

Lambda 表達式語法

Lambda 表達式的語法類似於標準函式的語法。 差異如下:

  • Lambda 運算式沒有名稱。

  • Lambda 運算式不能有 修飾詞,例如 OverloadsOverrides

  • Lambda 表達式不會使用 As 子句來指定函式的傳回型別。 而是從單行 Lambda 表達式主體評估的值,或多行 Lambda 表達式的傳回值推斷類型。 例如,如果單行 Lambda 表達式的主體為 Where cust.City = "London",則其傳回類型為 Boolean

  • 單行 Lambda 表達式的主體必須是表達式,而不是語句。 本文可以包含對函式程式的呼叫,但不能由對子程式的呼叫所組成。

  • 所有參數都必須具有指定的數據類型,或是必須推斷所有參數。

  • 不允許選擇性和 Paramarray 參數。

  • 不允許泛型參數。

範例 1

下列範例示範兩種方式來建立簡單的 Lambda 表達式。 第一個使用 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

以下是 Lambda 表達式的範例,其會遞增其自變數並傳回值。 此範例顯示函式的單行和多行 Lambda 表達式語法。 如需更多範例,請參閱 Lambda 運算式

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

Lambda 表達式的基礎是 Language-Integrated Query (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)

如需查詢方法的詳細資訊,請參閱 查詢。 如需標準查詢運算符的詳細資訊,請參閱 標準查詢運算符概觀

另請參閱