Delen via


Functie-expressie (Visual Basic)

Declareert de parameters en code waarmee een functie lambda-expressie wordt gedefinieerd.

Syntaxis

Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] )
  [ statements ]
End Function

generator

Term Definitie
parameterlist Optioneel. Een lijst met namen van lokale variabelen die de parameters van deze procedure vertegenwoordigen. De haakjes moeten aanwezig zijn, zelfs wanneer de lijst leeg is. Zie de lijst met parameters.
expression Vereist. Eén expressie. Het type van de expressie is het retourtype van de functie.
statements Vereist. Een lijst met instructies die een waarde retourneren met behulp van de Return instructie. (Zie Retourinstructie.) Het type van de geretourneerde waarde is het retourtype van de functie.

Opmerkingen

Een lambda-expressie is een functie zonder een naam die een waarde berekent en retourneert. U kunt een lambda-expressie overal gebruiken waar u een gemachtigdentype kunt gebruiken, behalve als argument voor RemoveHandler. Zie Delegeringsinstructie en ontspannen conversie voor meer informatie over gemachtigden en het gebruik van lambda-expressies met gemachtigden.

Syntaxis van lambda-expressie

De syntaxis van een lambda-expressie lijkt op die van een standaardfunctie. De verschillen zijn als volgt:

  • Een lambda-expressie heeft geen naam.

  • Lambda-expressies kunnen geen modifiers hebben, zoals Overloads of Overrides.

  • Lambda-expressies gebruiken As geen component om het retourtype van de functie aan te wijzen. In plaats daarvan wordt het type afgeleid van de waarde die de hoofdtekst van een lambda-expressie met één regel evalueert, of de retourwaarde van een lambda-expressie met meerdere regels. Als de hoofdtekst van een lambda-expressie met één regel bijvoorbeeld is Where cust.City = "London", is Booleanhet retourtype .

  • De hoofdtekst van een lambda-expressie met één regel moet een expressie zijn, niet een instructie. De hoofdtekst kan bestaan uit een aanroep van een functieprocedure, maar niet uit een aanroep naar een subprocedure.

  • Alle parameters moeten opgegeven gegevenstypen hebben of alle parameters moeten worden afgeleid.

  • Optionele parameters en Paramarray-parameters zijn niet toegestaan.

  • Algemene parameters zijn niet toegestaan.

Voorbeeld 1

In de volgende voorbeelden ziet u twee manieren om eenvoudige lambda-expressies te maken. De eerste gebruikt een Dim naam voor de functie op te geven. Als u de functie wilt aanroepen, verzendt u een waarde voor de parameter.

Dim add1 = Function(num As Integer) num + 1
' The following line prints 6.
Console.WriteLine(add1(5))

Voorbeeld 2

U kunt de functie ook tegelijkertijd declareren en uitvoeren.

Console.WriteLine((Function(num As Integer) num + 1)(5))

Voorbeeld 3

Hieronder volgt een voorbeeld van een lambda-expressie waarmee het argument wordt verhoogd en de waarde wordt geretourneerd. In het voorbeeld ziet u zowel de syntaxis van de lambda-expressie met één regel als de syntaxis van de lambda-expressie voor een functie. Zie Lambda-expressies voor meer voorbeelden.

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))

Voorbeeld 4

Lambda-expressies maken deel uit van veel van de queryoperators in Language-Integrated Query (LINQ) en kunnen expliciet worden gebruikt in op methoden gebaseerde query's. In het volgende voorbeeld ziet u een typische LINQ-query, gevolgd door de vertaling van de query in de methodeindeling.

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)

Zie Query's voor meer informatie over querymethoden. Zie Overzicht van Standard-queryoperators voor meer informatie over standaardqueryoperators.

Zie ook