Partilhar via


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 ou Overrides.

  • 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 for Where 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.

Consulte também