宣告定義函式 Lambda 表達式的參數和程式代碼。
語法
Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] )
[ statements ]
End Function
組件
| 術語 | 定義 |
|---|---|
parameterlist |
選擇性。 代表此程序參數的局部變數名稱清單。 即使清單是空的,括弧也必須存在。 請參閱 參數清單。 |
expression |
必須的。 單一表達式。 表達式的類型是函式的傳回型別。 |
statements |
必須的。 使用 Return 語句傳回值的語句清單。 (請參閱 Return 語句。傳回之值的型別是函式的傳回型別。 |
備註
Lambda 運算式是沒有名稱的函式,可計算並傳回值。 您可以在任何位置使用 Lambda 表達式,但做為 的 RemoveHandler自變數除外。 如需委派的詳細資訊,以及搭配委派使用 Lambda 表達式,請參閱 委派語句 和 寬鬆委派轉換。
Lambda 表達式語法
Lambda 表達式的語法類似於標準函式的語法。 差異如下:
Lambda 運算式沒有名稱。
Lambda 運算式不能有 修飾詞,例如
Overloads或Overrides。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)
如需查詢方法的詳細資訊,請參閱 查詢。 如需標準查詢運算符的詳細資訊,請參閱 標準查詢運算符概觀。