Share via


Expresión de función

Actualización: noviembre 2007

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

Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] ) _
    expression

Partes

  • parameterlist
    Opcional. Lista de nombres de variable local que representan los parámetros de este procedimiento. Los paréntesis deben estar presentes aunque la lista esté vacía. Visite Lista de parámetros.

  • expression
    Necesaria. Una expresión única. El valor de la expresión determina el tipo de la función y el valor que se devuelve cuando se llama a la función.

Comentarios

Una expresión lambda es una función sin nombre que calcula y devuelve un solo valor. Puede utilizar una expresión lambda en cualquier lugar donde puede utilizar un tipo de delegado, excepto como argumento de 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 se parece 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 u Overrides.

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

  • El cuerpo de la función debe ser una expresión, no una instrucción. El cuerpo puede estar formado por una llamada a un procedimiento de función, pero no una llamada a un subprocedimiento.

  • No hay ninguna instrucción Return. El valor devuelto por la función es el valor de la expresión del cuerpo de la función.

  • No hay ninguna instrucción End Function.

  • Todos los parámetros deben de tener tipos de datos especificados o se deben deducir.

  • No se permite los parámetros Optional y ParamArray.

  • No se permiten los parámetros Generic.

Como resultado de estas restricciones y de las maneras en las que se utilizan las expresiones lambda, éstas suelen ser cortas y sencillas.

Ejemplo

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

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

O bien, puede declarar y ejecutar la función al mismo tiempo.

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

Las expresiones lambda están debajo de muchos de los operadores de consulta de Language-Integrated Query (LINQ) y se pueden utilizar explícitamente en consultas basadas en método. En el ejemplo siguiente se muestra una consulta LINQ típica, seguida por 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 métodos de consulta, vea Consultas (Visual Basic). Para obtener más información sobre los operadores de consulta estándar, vea Información general sobre operadores de consulta estándar.

Vea también

Conceptos

Expresiones lambda

Operadores y expresiones en Visual Basic

Información general sobre las instrucciones

Comparaciones de valores

Expresiones booleanas

Conversión de delegado flexible

Referencia

Instrucción Function (Visual Basic)

If (operador)