Share via


函式運算式

更新: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)。如需標準查詢運算子的詳細資訊,請參閱標準查詢運算子概觀

請參閱

概念

Lambda 運算式

Visual Basic 中的運算子和運算式

陳述式概觀

數值比較

布林運算式

寬鬆委派轉換

參考

Function 陳述式 (Visual Basic)

If 運算子