Freigeben über


Funktionsausdruck (Visual Basic)

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 Overloads oder Overrides.

  • Lambda-Ausdrücke verwenden As keine 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 lautet Where cust.City = "London", lautet Booleander 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".

Siehe auch