Funktionsuttryck (Visual Basic)
Deklarerar parametrarna och koden som definierar ett lambda-uttryck för funktionen.
Syntax
Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] )
[ statements ]
End Function
Delar
Period | Definition |
---|---|
parameterlist |
Valfritt. En lista över lokala variabelnamn som representerar parametrarna för den här proceduren. Parenteserna måste finnas även när listan är tom. Se Parameterlista. |
expression |
Obligatoriska. Ett enda uttryck. Typen av uttryck är funktionens returtyp. |
statements |
Obligatoriska. En lista över -instruktioner som returnerar ett värde med hjälp av -instruktionen Return . (Se Returuttryck.) Den typ av värde som returneras är funktionens returtyp. |
Kommentarer
Ett lambda-uttryck är en funktion utan ett namn som beräknar och returnerar ett värde. Du kan använda ett lambda-uttryck var som helst där du kan använda en ombudstyp, förutom som ett argument för RemoveHandler
. Mer information om ombud och användning av lambda-uttryck med ombud finns i Delegera-instruktion och Avslappnad delegatkonvertering.
Lambda-uttryckssyntax
Syntaxen för ett lambda-uttryck liknar en standardfunktions syntax. Skillnaderna är följande:
Ett lambda-uttryck har inget namn.
Lambda-uttryck kan inte ha modifierare, till exempel
Overloads
ellerOverrides
.Lambda-uttryck använder inte en
As
sats för att ange funktionens returtyp. I stället härleds typen från det värde som brödtexten i ett lambda-uttryck med en rad utvärderas till, eller returvärdet för ett lambda-uttryck med flera rader. Om brödtexten i ett lambda-uttryck med en rad till exempel ärWhere cust.City = "London"
ärBoolean
dess returtyp .Brödtexten i ett lambda-uttryck med en rad måste vara ett uttryck, inte en -instruktion. Brödtexten kan bestå av ett anrop till en funktionsprocedur, men inte ett anrop till en underprocedur.
Antingen måste alla parametrar ha angivna datatyper eller så måste alla härledas.
Valfria parametrar och Paramarray-parametrar är inte tillåtna.
Allmänna parametrar är inte tillåtna.
Exempel 1
I följande exempel visas två sätt att skapa enkla lambda-uttryck. Den första använder en Dim
för att ange ett namn för funktionen. Om du vill anropa funktionen skickar du in ett värde för parametern.
Dim add1 = Function(num As Integer) num + 1
' The following line prints 6.
Console.WriteLine(add1(5))
Exempel 2
Du kan också deklarera och köra funktionen samtidigt.
Console.WriteLine((Function(num As Integer) num + 1)(5))
Exempel 3
Följande är ett exempel på ett lambda-uttryck som ökar argumentet och returnerar värdet. Exemplet visar både lambda-uttryckssyntaxen för en enskild rad och flera rader för en funktion. Fler exempel finns i Lambda-uttryck.
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))
Exempel 4
Lambda-uttryck ligger till grund för många av frågeoperatorerna i Language-Integrated Query (LINQ) och kan användas explicit i metodbaserade frågor. I följande exempel visas en typisk LINQ-fråga, följt av översättningen av frågan till metodformat.
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)
Mer information om frågemetoder finns i Frågor. Mer information om vanliga frågeoperatorer finns i Översikt över vanliga frågeoperatorer.