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. Confira a Lista de parâmetros.
expression Obrigatórios. Uma expressão única. O tipo da expressão é o tipo de retorno da função.
statements Obrigatórios. Uma lista de instruções que retorna um valor usando a instrução Return. Confira Instrução Return. O tipo do valor retornado é o tipo de retorno da função.

Comentários

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 em 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, confira Instrução Delegate e Conversão de delegado reduzida.

Sintaxe da expressão lambda

A sintaxe de uma expressão lambda é semelhante à de uma função padrão. As diferenças são:

  • 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 Lambda não usam uma cláusula As para designar o tipo de retorno da função. Em vez disso, o tipo é inferido do valor ao qual o corpo de uma expressão lambda de linha única é avaliado ou o valor retornado 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", o tipo de retorno será Boolean.

  • O corpo de uma expressão lambda de linha única deve ser uma expressão, não uma instrução. O corpo pode consistir em uma chamada para um procedimento Function, 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.

  • Parâmetros genéricos não são permitidos.

Exemplo 1

Os exemplos a seguir mostram duas maneiras de criar expressões lambda simples. O primeiro usa um Dim para fornecer um nome para a função. Para chamar a função, você envia 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

Mostraremos a seguir 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 de várias linhas para uma função. Para obter mais exemplos, confira Expressões 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 lambda são subjacentes a muitos dos operadores de consulta LINQ (consulta integrada à linguagem) e podem ser usadas explicitamente em consultas baseadas em método. O exemplo a seguir mostra uma consulta LINQ típica, seguida pela tradução da consulta no 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, leia Consultas. Para obter mais informações sobre os operadores de consulta padrão, confira Visão geral de operadores de consulta padrão.

Confira também