Expressão de função (Visual Basic)
Declara os parâmetros e o código que definem uma expressão lambda de função.
Sintaxe
Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] )
[ statements ]
End Function
Partes
Termo | Definição |
---|---|
parameterlist |
Opcional. Uma lista de nomes de variáveis locais que representam os parâmetros deste procedimento. Os parênteses devem estar presentes mesmo quando a lista estiver vazia. Consulte Lista de parâmetros. |
expression |
Obrigatório. Uma única expressão. O tipo da expressão é o tipo de retorno da função. |
statements |
Obrigatório. Uma lista de instruções que retorna um valor usando a Return instrução. (Ver Declaração de retorno.) O tipo do valor retornado é o tipo de retorno da função. |
Observações
Uma expressão lambda é uma função sem um nome que calcula e retorna um valor. Você pode usar uma expressão lambda em qualquer lugar que possa usar um tipo delegado, exceto como um argumento para RemoveHandler
. Para obter mais informações sobre delegados e o uso de expressões lambda com delegados, consulte Declaração de delegado e conversão de delegado relaxada.
Sintaxe da expressão do Lambda
A sintaxe de uma expressão lambda se assemelha à de uma função padrão. As diferenças são as seguintes:
Uma expressão lambda não tem um nome.
As expressões lambda não podem ter modificadores, como
Overloads
ouOverrides
.As expressões do Lambda não usam uma
As
cláusula para designar o tipo de retorno da função. Em vez disso, o tipo é inferido a partir do valor que o corpo de uma expressão lambda de linha única avalia ou do valor de retorno de uma expressão lambda de várias linhas. Por exemplo, se o corpo de uma expressão lambda de linha única forWhere cust.City = "London"
, seu tipo de retorno seráBoolean
.O corpo de uma expressão lambda de linha única deve ser uma expressão, não uma declaração. O corpo pode consistir em uma chamada para um procedimento de função, mas não uma chamada para um subprocedimento.
Todos os parâmetros devem ter tipos de dados especificados ou todos devem ser inferidos.
Parâmetros opcionais e Paramarray não são permitidos.
Não são permitidos parâmetros genéricos.
Exemplo 1
Os exemplos a seguir mostram duas maneiras de criar expressões lambda simples. O primeiro usa a Dim
para fornecer um nome para a função. Para chamar a função, envie um valor para o parâmetro.
Dim add1 = Function(num As Integer) num + 1
' The following line prints 6.
Console.WriteLine(add1(5))
Exemplo 2
Como alternativa, você pode declarar e executar a função ao mesmo tempo.
Console.WriteLine((Function(num As Integer) num + 1)(5))
Exemplo 3
A seguir está um exemplo de uma expressão lambda que incrementa seu argumento e retorna o valor. O exemplo mostra a sintaxe de expressão lambda de linha única e multilinha para uma função. Para obter mais exemplos, consulte Expressões do Lambda.
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))
Exemplo 4
As expressões do Lambda estão subjacentes a muitos dos operadores de consulta no LINQ (Language-Integrated Query) e podem ser usadas explicitamente em consultas baseadas em método. O exemplo a seguir mostra uma consulta LINQ típica, seguida pela conversão da consulta em formato de método.
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)
Para obter mais informações sobre métodos de consulta, consulte Consultas. Para obter mais informações sobre operadores de consulta padrão, consulte Visão geral dos operadores de consulta padrão.