函式運算式 (Visual Basic)

宣告定義函式 Lambda 運算式的參數和程式碼。

語法

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

組件

詞彙 定義
parameterlist 選擇性。 代表此程序參數的區域變數名稱清單。 即使清單是空的,括弧也必須存在。 請參閱參數清單
expression 必要。 單一運算式。 運算式的類型是函式的傳回型別。
statements 必要。 使用 Return 陳述式傳回值的陳述式清單。 (請參閱 return 陳述式)。傳回的數值類型是函式的傳回型別。

備註

Lambda 運算式是沒有名稱的函式,可計算並傳回值。 除了作為 RemoveHandler 的引數之外,您可以使用委派類型,在任何位置使用 Lambda 運算式。 如需委派及搭配委派使用 Lambda 運算式的詳細資訊,請參閱 Delegate 陳述式寬鬆委派轉換

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)

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

另請參閱