Freigeben über


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

Lambda-Ausdrücke

Operatoren und Ausdrücke in Visual Basic

Übersicht über Anweisungen

Wertvergleiche

Boolesche Ausdrücke

Gelockerte Delegatenkonvertierung

Referenz

Function-Anweisung (Visual Basic)

Operator If