Funktionsausdruck (Visual Basic)
Deklariert die Parameter und den Code, die einen Funktionslambdaausdruck definieren.
Syntax
Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] )
[ statements ]
End Function
Bestandteile
Begriff | Definition |
---|---|
parameterlist |
Dies ist optional. Eine Liste der lokalen Variablennamen, die die Parameter dieser Prozedur darstellen. Die Klammern müssen auch dann vorhanden sein, wenn die Liste leer ist. Siehe Parameterliste (Visual Basic). |
expression |
Erforderlich. Ein einzelner Ausdruck. Der Typ des Ausdrucks ist der Rückgabetyp der Funktion. |
statements |
Erforderlich. Eine Liste von Anweisungen, die einen Wert mithilfe der Return -Anweisung zurückgeben. (Siehe Return-Anweisung.) Der Typ des zurückgegebenen Werts ist der Rückgabetyp der Funktion. |
Bemerkungen
Ein Lambdaausdruck ist eine Funktion ohne Namen, die einen Wert berechnet und zurückgibt. Sie können einen Lambdaausdruck überall dort verwenden, wo Sie einen Delegattyp verwenden können, außer als Argument für RemoveHandler
. Weitere Informationen zu Delegaten und zur Verwendung von Lambdaausdrücken mit Delegaten finden Sie unter Delegate-Anweisung und Gelockerte Delegatenkonvertierung.
Lambdaausdruckssyntax
Die Syntax eines Lambdaausdrucks ähnelt der Syntax einer Standardfunktion. Es gibt die folgenden Unterschiede:
Dieser Ausdruck besitzt keinen Namen.
Lambdaausdrücke können keine Modifizierer wie
Overloads
oderOverrides
aufweisen.Lambdaausdrücke verwenden keine
As
-Klausel, um den Rückgabetyp der Funktion festzulegen. Stattdessen wird der Typ aus dem Wert abgeleitet, in den der Text eines einzeiligen Lambdaausdrucks ausgewertet wird, oder vom Rückgabewert eines mehrzeiligen Lambdaausdrucks. Wenn der Text eines einzeiligen Lambdaausdrucks beispielsweiseWhere cust.City = "London"
lautet, ist der RückgabetypBoolean
.Der Textkörper eines einzeiligen Lambdaausdrucks muss ein Ausdruck und keine Anweisung sein. Der Text kann aus einem Aufruf einer Funktionsprozedur bestehen, aber nicht aus einem Aufruf einer Unterprozedur.
Entweder müssen alle Parameter über angegebene Datentypen verfügen, oder alle Datentypen müssen abgeleitet werden.
Optionale und Paramarray-Parameter sind nicht zulässig.
Generische Parameter sind nicht zulässig.
Beispiel 1
Die folgenden Beispiele zeigen zwei Möglichkeiten zum Erstellen einfacher Lambdaausdrücke. Das erste Beispiel verwendet Dim
, um einen Namen für die Funktion anzugeben. Um die Funktion aufzurufen, übergeben Sie einen Wert für den Parameter.
Dim add1 = Function(num As Integer) num + 1
' The following line prints 6.
Console.WriteLine(add1(5))
Beispiel 2
Alternativ können Sie die Funktion deklarieren und gleichzeitig ausführen.
Console.WriteLine((Function(num As Integer) num + 1)(5))
Beispiel 3
Im Folgenden finden Sie ein Beispiel für einen Lambdaausdruck, der sein Argument inkrementiert und den Wert zurückgibt. Das Beispiel zeigt die Syntax des einzeiligen und mehrzeiligen Lambdaausdrucks für eine Funktion. Weitere Beispiele finden Sie unter Lambdaausdrücke.
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))
Beispiel 4
Lambdaausdrücke liegen vielen der Abfrageoperatoren in LINQ (Language-Integrated Query) zugrunde und können explizit in methodenbasierten Abfragen verwendet werden. Das folgende Beispiel zeigt eine typische LINQ-Abfrage, gefolgt von der Übersetzung der Abfrage in das Methodenformat.
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)
Weitere Informationen zu Abfragemethoden finden Sie unter Abfragen. Weitere Informationen zu Standardabfrageoperatoren finden Sie unter Übersicht über Standardabfrageoperatoren.