Funktionsausdruck (Visual Basic)
Deklariert die Parameter und den Code, die einen Lambda-Funktionsausdruck definieren.
Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] )
[ statements ]
End Function
Bestandteile
Ausdruck |
Definition |
parameterlist |
Optional. Eine Liste der Namen von lokalen Variablen, die die Parameter dieser Prozedur darstellen. Die Klammern müssen auch dann vorhanden sein, wenn die Liste leer ist. Weitere Informationen finden Sie unter 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 mit der Anweisung Return einen Wert zurückgibt. (Weitere Informationen finden Sie unter Return-Anweisung (Visual Basic).) Der Typ des Rückgabewerts ist der Rückgabetyp der Funktion. |
Hinweise
Ein Lambda-Ausdruck ist eine Funktion ohne Namen, von der ein einzelner Wert berechnet und zurückgegeben wird. Sie können einen Lambda-Ausdruck überall dort verwenden, wo Sie auch einen Delegattyp verwenden können, außer als Argument für RemoveHandler. Weitere Informationen zu Delegaten und der Verwendung von Lambda-Ausdrücken mit Delegaten, finden Sie unter Delegate-Anweisung und Gelockerte Delegatenkonvertierung (Visual Basic).
Lambda-Ausdruckssyntax
Die Syntax eines Lambda-Ausdrucks ähnelt der einer Standardfunktion. Die Unterschiede sind:
Ein Lambda-Ausdruck verfügt über keinen Namen.
Lambda-Ausdrücke dürfen keine Modifizierer enthalten, wie z. B. Overloads oder Overrides.
In Lambda-Ausdrücken wird der Rückgabetyp der Funktion nicht mit einer As-Klausel festgelegt. Stattdessen wird der Typ von dem Wert, zu dem der Text des einzeiligen Lambda-Ausdruck ausgewertet wird, oder dem Rückgabewert des mehrzeiligen Lambda-Ausdruck abgeleitet. Wenn der Text eines einzeiligen Lambda-Ausdrucks z. B. Where cust.City = "London" lautet, ist dessen Rückgabetyp Boolean.
Der Text des einzeiligen Lambda-Ausdruck muss ein Ausdruck sein, keine Anweisung. Der Text kann aus einem Aufruf einer Funktionsprozedur bestehen, jedoch nicht aus einem Aufruf einer Unterprozedur.
Entweder müssen alle Parameter über angegebene Datentypen verfügen, oder alle Datentypen müssen abgeleitet sein.
Optionale und ParamArray-Parameter sind nicht zulässig.
Generische Parameter sind nicht zulässig.
Beispiel
In den folgenden Beispielen werden zwei Möglichkeiten für die Erstellung einfacher Lambda-Ausdrücke gezeigt. Im ersten Beispiel wird mithilfe von Dim ein Name für die Funktion bereitgestellt. Zum Aufrufen der Funktion übergeben Sie einen Wert als Parameter.
Dim add1 = Function(num As Integer) num + 1
' The following line prints 6.
Console.WriteLine(add1(5))
Alternativ kann die Funktion gleichzeitig deklariert und ausgeführt werden.
Console.WriteLine((Function(num As Integer) num + 1)(5))
Das folgende Beispiel zeigt einen Lambda-Ausdruck, der das übergebene Argument inkrementiert und den Wert zurückgibt. Im Beispiel wird die Syntax für einzeilige und mehrzeilige Lambda-Ausdrücke für eine Funktion veranschaulicht. Weitere Beispiele finden Sie unter Lambda-Ausdrücke (Visual Basic).
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))
In Sprachintegrierte Abfrage (Language-Integrated Query, LINQ) liegen zahlreichen Abfrageoperatoren Lambda-Ausdrücke zugrunde, die in methodenbasierten Abfragen explizit verwendet werden können. Im folgenden Beispiel wird eine typische LINQ-Abfrage gefolgt von der Übersetzung der Abfrageinformationen in das Methodenformat dargestellt.
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 (Visual Basic). Weitere Informationen über Standardabfrageoperatoren finden Sie unter Übersicht über Standardabfrageoperatoren.
Siehe auch
Referenz
Function-Anweisung (Visual Basic)
Konzepte
Lambda-Ausdrücke (Visual Basic)
Operatoren und Ausdrücke in Visual Basic
Boolesche Ausdrücke (Visual Basic)
Gelockerte Delegatenkonvertierung (Visual Basic)