Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Deklariert die Parameter und den Code, mit denen ein Funktions-Lambda-Ausdruck definiert wird.
Syntax
Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] )
[ statements ]
End Function
Bestandteile
| Begriff | Definition |
|---|---|
parameterlist |
Wahlfrei. Eine Liste mit lokalen Variablennamen, 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 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 Lambda-Ausdruck ist eine Funktion ohne Namen, die einen Wert berechnet und zurückgibt. Sie können an beliebiger Stelle einen Lambda-Ausdruck verwenden, mit Ausnahme eines Arguments.RemoveHandler Weitere Informationen zu Stellvertretungen und zur Verwendung von Lambda-Ausdrücken mit Stellvertretungen finden Sie unter Delegate Statement and Relaxed Delegate Conversion.
Lambda-Ausdruckssyntax
Die Syntax eines Lambda-Ausdrucks ähnelt der einer Standardfunktion. Es gibt folgende Unterschiede:
Ein Lambda-Ausdruck hat keinen Namen.
Lambda-Ausdrücke können keine Modifizierer haben, wie
OverloadsoderOverrides.Lambda-Ausdrücke verwenden
Askeine Klausel, um den Rückgabetyp der Funktion festzulegen. Stattdessen wird der Typ vom Wert abgeleitet, zu dem der Textkörper eines einzeiligen Lambda-Ausdrucks ausgewertet wird, oder den Rückgabewert eines mehrzeiligen Lambda-Ausdrucks. Wenn beispielsweise der Textkörper eines einzeiligen Lambda-Ausdrucks lautetWhere cust.City = "London", lautetBooleander Rückgabetyp .Der Textkörper eines einzeiligen Lambda-Ausdrucks muss ein Ausdruck und keine Anweisung sein. Der Textkörper 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 müssen abgeleitet werden.
Optionale Parameter 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 Lambda-Ausdrücke. Der erste verwendet einen Dim Namen für die Funktion. Um die Funktion aufzurufen, senden 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 gleichzeitig deklarieren und ausführen.
Console.WriteLine((Function(num As Integer) num + 1)(5))
Beispiel 3
Nachfolgend sehen Sie ein Beispiel für einen Lambda-Ausdruck, der das Argument erhöht und den Wert zurückgibt. Das Beispiel zeigt sowohl die Einzeil- als auch die mehrzeilige Lambda-Ausdruckssyntax für eine Funktion. Weitere Beispiele finden Sie unter Lambda-Ausdrü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
Lambda-Ausdrücke enthalten viele der Abfrageoperatoren in Language-Integrated Query (LINQ) 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".