Comparteix a través de


Expresión de función (Visual Basic)

Declara los parámetros y el código que definen una expresión lambda de función.

Sintaxis

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

Partes

Término Definición
parameterlist Opcional. Lista de nombres de variables locales que representan los parámetros de este procedimiento. Los paréntesis deben aparecer incluso cuando la lista esté vacía. Consulte Lista de parámetros.
expression Necesario. Una expresión única El tipo de la expresión es el tipo de valor devuelto de la función.
statements Necesario. Lista de instrucciones que devuelve un valor mediante la instrucción Return. (Vea Instrucción Return). El tipo del valor devuelto es el tipo de valor devuelto de la función.

Comentarios

Una expresión lambda es una función sin nombre que calcula y devuelve un valor. Puede usar una expresión lambda en cualquier lugar donde se pueda usar un tipo delegado, excepto como argumento para RemoveHandler. Para obtener más información sobre los delegados y el uso de expresiones lambda con delegados, vea Delegate (Instrucción) y Conversión de delegado flexible.

Sintaxis de la expresión lambda

La sintaxis de una expresión lambda es similar a la de una función estándar. Las diferencias son las siguientes:

  • Una expresión lambda no tiene nombre.

  • Las expresiones lambda no pueden tener modificadores, como Overloads ni Overrides.

  • Las expresiones lambda no usan una cláusula As para designar el tipo de valor devuelto de la función. En su lugar, el tipo se deduce del valor como el que se evalúa el cuerpo de una expresión lambda de una sola línea o el valor devuelto de una expresión lambda de varias líneas. Por ejemplo, si el cuerpo de una expresión lambda de una sola línea es Where cust.City = "London", su tipo de valor devuelto es Boolean.

  • El cuerpo de una expresión lambda de una sola línea debe ser una expresión, no una instrucción. Este puede constar de una llamada a un procedimiento de función, pero no de una llamada a un subproceso.

  • Todos los parámetros deben tener tipos de datos especificados o bien deben inferirse.

  • No se permiten los parámetros opcionales y ParamArray.

  • No se permiten los parámetros genéricos.

Ejemplo 1

En los ejemplos siguientes se muestran dos maneras de crear expresiones lambda simples. El primero usa Dim para proporcionar un nombre a la función. Para llamar a la función, se envía un valor para el parámetro.

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

Ejemplo 2

Como alternativa, puede declarar y ejecutar la función al mismo tiempo.

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

Ejemplo 3

A continuación, se muestra un ejemplo de una expresión lambda que incrementa su argumento y devuelve el valor. En el ejemplo se muestra la sintaxis de expresión lambda de una sola línea y de varias líneas para una función. Para obtener más ejemplos, vea Expresiones 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))

Ejemplo 4

Las expresiones lambda subyacen a muchos de los operadores de consulta de Language-Integrated Query (LINQ) y se pueden usar de forma explícita en consultas basadas en métodos. En el ejemplo siguiente se muestra una consulta de LINQ típica, seguida de la traducción de la consulta al 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 obtener más información sobre los métodos de consulta, vea Consultas. Para obtener más información sobre los operadores de consulta estándar, vea Información general sobre operadores de consulta estándar.

Consulte también