Udostępnij za pośrednictwem


Function — Wyrażenie (Visual Basic)

Deklaruje parametry i kod definiujący wyrażenie lambda funkcji.

Składnia

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

generatora

Termin Definicja
parameterlist Opcjonalny. Lista lokalnych nazw zmiennych reprezentujących parametry tej procedury. Nawiasy muszą być obecne nawet wtedy, gdy lista jest pusta. Zobacz Lista parametrów.
expression Wymagany. Pojedyncze wyrażenie. Typem wyrażenia jest zwracany typ funkcji.
statements Wymagany. Lista instrukcji, które zwracają wartość przy użyciu instrukcji Return . (Zobacz Return, instrukcja.) Zwracany typ wartości jest zwracanym typem funkcji.

Uwagi

Wyrażenie lambda jest funkcją bez nazwy, która oblicza i zwraca wartość. Możesz użyć wyrażenia lambda w dowolnym miejscu, w którym można użyć typu delegata, z wyjątkiem argumentu do RemoveHandler. Aby uzyskać więcej informacji na temat delegatów i używania wyrażeń lambda z delegatami, zobacz Delegowanie instrukcji i Zrelaksowana konwersja delegatów.

Składnia wyrażenia lambda

Składnia wyrażenia lambda przypomina składnię funkcji standardowej. Różnice są następujące:

  • Wyrażenie lambda nie ma nazwy.

  • Wyrażenia lambda nie mogą mieć modyfikatorów, takich jak Overloads lub Overrides.

  • Wyrażenia lambda nie używają As klauzuli w celu wyznaczenia zwracanego typu funkcji. Zamiast tego typ jest wnioskowany z wartości, którą treść wyrażenia lambda jednowierszowego oblicza lub zwraca wartość wyrażenia lambda wielowierszowego. Jeśli na przykład treść wyrażenia lambda jednowierszowego to Where cust.City = "London", zwracany typ to Boolean.

  • Treść wyrażenia lambda jednowierszowego musi być wyrażeniem, a nie instrukcją. Treść może składać się z wywołania procedury funkcji, ale nie wywołania procedury podrzędnej.

  • Wszystkie parametry muszą mieć określone typy danych lub wszystkie muszą zostać wywnioskowane.

  • Parametry opcjonalne i paramarray nie są dozwolone.

  • Parametry ogólne nie są dozwolone.

Przykład 1

W poniższych przykładach przedstawiono dwa sposoby tworzenia prostych wyrażeń lambda. Pierwszy używa elementu , Dim aby podać nazwę funkcji. Aby wywołać funkcję, należy wysłać wartość parametru .

Dim add1 = Function(num As Integer) num + 1
' The following line prints 6.
Console.WriteLine(add1(5))

Przykład 2

Alternatywnie można zadeklarować i uruchomić funkcję w tym samym czasie.

Console.WriteLine((Function(num As Integer) num + 1)(5))

Przykład 3

Poniżej znajduje się przykład wyrażenia lambda, które zwiększa jego argument i zwraca wartość. W przykładzie przedstawiono zarówno składnię wyrażenia lambda jednowierszowego, jak i wielowierszowego dla funkcji. Aby uzyskać więcej przykładów, zobacz Wyrażenia 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))

Przykład 4

Wyrażenia lambda zastępują wiele operatorów zapytań w zapytaniu zintegrowanym z językiem (LINQ) i mogą być używane jawnie w zapytaniach opartych na metodach. W poniższym przykładzie przedstawiono typowe zapytanie LINQ, a następnie tłumaczenie zapytania na format metody.

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)

Aby uzyskać więcej informacji na temat metod zapytań, zobacz Zapytania. Aby uzyskać więcej informacji na temat standardowych operatorów zapytań, zobacz Omówienie standardowych operatorów zapytań.

Zobacz też