Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 estar presentes incluso cuando la lista está vacía. Consulte Lista de parámetros. |
expression |
Obligatorio. Expresión única. El tipo de la expresión es el tipo de valor devuelto de la función. |
statements |
Obligatorio. Lista de instrucciones que devuelve un valor mediante la Return instrucción . (Vea Return Statement).) El tipo del valor devuelto es el tipo de valor devuelto de la función. |
Observaciones
Una expresión lambda es una función sin un nombre que calcula y devuelve un valor. Puede usar una expresión lambda en cualquier lugar donde pueda usar un tipo de 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 Statement and Relax Delegate Conversion.
Sintaxis de expresión lambda
La sintaxis de una expresión lambda es similar a la de una función estándar. Estas son las diferencias:
Una expresión lambda no tiene un nombre.
Las expresiones lambda no pueden tener modificadores, como
OverloadsoOverrides.Las expresiones lambda no usan una
Ascláusula para designar el tipo de valor devuelto de la función. En su lugar, el tipo se deduce del valor al 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 esWhere cust.City = "London", su tipo de valor devuelto esBoolean.El cuerpo de una expresión lambda de una sola línea debe ser una expresión, no una instrucción . El cuerpo puede constar de una llamada a un procedimiento de función, pero no una llamada a un subproceso.
Todos los parámetros deben tener tipos de datos especificados o todos deben inferirse.
No se permiten los parámetros opcionales y Paramarray.
No se permiten parámetros genéricos.
Ejemplo 1
En los ejemplos siguientes se muestran dos maneras de crear expresiones lambda simples. La primera usa para Dim proporcionar un nombre para la función. Para llamar a la función, envíe 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 explícitamente en consultas basadas en métodos. En el ejemplo siguiente se muestra una consulta LINQ típica, seguida de la traducción de la consulta en 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, consulte Consultas. Para obtener más información sobre los operadores de consulta estándar, consulte Información general sobre operadores de consulta estándar.