Expresión de función (Visual Basic)
Declara los parámetros y el código que definen una expresión lambda de función.
Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] )
[ statements ]
End Function
Elementos
Término |
Definición |
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.Vea Lista de parámetros (Visual Basic). |
expression |
Obligatorio.Una expresión única.El tipo de la expresión es el tipo de valor devuelto de la función. |
statements |
Obligatorio.Una lista de declaraciones que devuelve un valor mediante la instrucción Return .(Vea Return (Instrucción, Visual Basic).) 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 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 no estricta (Visual Basic).
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 al que se evalúa el cuerpo de una expresión lambda de línea única, o del valor devuelto de una expresión lambda multilínea.Por ejemplo, si el cuerpo de una expresión lambda de una única línea es Where cust.City = "London", su tipo de valor devuelto es Boolean.
El cuerpo de una expresión lambda de línea simple 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.
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.
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))
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 expresiones lambda de una sola línea y de varias líneas para una función.Para obtener más ejemplos, vea Lambda (expresiones) (Visual Basic).
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))
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 de 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
Referencia
Function (Instrucción, Visual Basic)
Conceptos
Lambda (expresiones) (Visual Basic)
Operadores y expresiones en Visual Basic
Comparaciones de valores (Visual Basic)
Expresiones booleanas (Visual Basic)
Conversión de delegado no estricta (Visual Basic)