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
lubOverrides
.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 toWhere cust.City = "London"
, zwracany typ toBoolean
.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ń.