函式運算式
更新:2007 年 11 月
宣告定義 Lambda 運算式的參數和程式碼。
Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] ) _
expression
組件
parameterlist
選擇性:代表此程序之參數的區域變數名稱清單。就算清單是空白的,還是要保留括弧。請參閱參數清單。expression
必要項。單一運算式。運算式的值會決定在函式受到呼叫時,傳回的函式型別與值。
備註
「Lambda 運算式」(Lambda Expression) 是沒有名稱的函式,會計算並傳回單一值。除了做為 RemoveHandler 的引數,您可以將 Lambda 運算式用於任何能使用委派型別的地方。如需委派以及配合委派使用 Lambda 運算式的詳細資訊,請參閱 Delegate 陳述式和寬鬆委派轉換。
Lambda 運算式語法
Lambda 運算式的語法類似標準函式。其差異如下:
Lambda 運算式沒有名稱。
Lambda 運算式不能有修飾詞 (Modifier),例如 Overloads 或 Overrides。
Lambda 運算式不會使用 As 子句指定函式的傳回型別。而是從 Lambda 運算式評估之主體的值來推斷型別。例如,如果 Lambda 運算式的主體是 Where cust.City = "London",其傳回型別為 Boolean。
函式的主體必須是運算式,而不是陳述式。主體可以由對函式程序的呼叫組成,但不可由對子程序的呼叫組成。
沒有 Return 陳述式。函式傳回的值就是函式主體中運算式的值。
沒有 End Function 陳述式。
所有參數都必須具有指定的資料型別,不然所有參數就都必須經過推斷。
不允許使用 Optional 和 Paramarray 參數。
不允許使用泛型參數。
因為這些限制以及 Lambda 運算式的使用方式,所產生的結果通常都是簡短不複雜的。
範例
下列範例會示範建立簡單 Lambda 運算式的兩個方法。第一個使用 Dim 提供函式的名稱。若要呼叫函式,則傳送參數的值。
Dim add1 = Function(num As Integer) num + 1
' The following line prints 6.
Console.WriteLine(add1(5))
或者,您可以同時宣告並執行函式。
Console.WriteLine((Function(num As Integer) num + 1)(5))
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)
如需查詢方法的詳細資訊,請參閱查詢 (Visual Basic)。如需標準查詢運算子的詳細資訊,請參閱標準查詢運算子概觀。