Funktionsausdruck
Aktualisiert: November 2007
Deklariert die Parameter und den Code, die einen Lambda-Ausdruck definieren.
Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] ) _
expression
Bestandteile
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. Siehe Parameterliste.expression
Erforderlich. Ein einzelner Ausdruck. Der Wert des Ausdrucks bestimmt den zurückgegebenen Typ der Funktion und den zurückgegebenen Wert bei Aufruf der Funktion.
Hinweise
Ein Lambda-Ausdruck ist eine Funktion ohne Namen, die einen einzelnen Wert berechnet und zurückgibt. 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.
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 abgeleitet, der sich aus der Auswertung des Lambda-Ausdruckstext ergibt. Wenn der Text des Lambda-Ausdrucks z. B. Where cust.City = "London" lautet, ist dessen Rückgabetyp Boolean
Der Text der Funktion muss ein Ausdruck und keine Anweisung sein. Der Text kann aus einem Aufruf einer Funktionsprozedur bestehen, jedoch nicht aus einem Aufruf einer Unterprozedur.
Es gibt keine Return-Anweisung. Der von der Funktion zurückgegebene Wert ist der Wert des Ausdrucks im Text der Funktion.
Es gibt keine End Function-Anweisung.
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.
Lambda-Ausdrücke sind als Folge dieser Einschränkungen und aufgrund ihrer Verwendungsart normalerweise kurz und unkompliziert.
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))
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
Konzepte
Operatoren und Ausdrücke in Visual Basic
Gelockerte Delegatenkonvertierung