函式運算式 (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 運算式不能有修飾元,例如
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)
如需查詢方法的詳細資訊,請參閱查詢。 如需標準查詢運算子的詳細資訊,請參閱標準查詢運算子概觀。