Выражение Function (Visual Basic)
Объявляет параметры и код, который определяет функцию-лямбда-выражение.
Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] )
[ statements ]
End Function
Части
Термин |
Определение |
parameterlist |
Необязательный.Список имен локальных переменных, представляющих параметры этой процедуры.Круглые скобки должны присутствовать даже если список пуст.Дополнительные сведения см. в разделе Список параметров (Visual Basic). |
expression |
Обязательный.Одиночное выражение.Тип выражения — возвращаемый тип функции. |
statements |
Обязательный.Список операторов, возвращающих значение с помощью оператораReturn .(См. раздел Оператор Return (Visual Basic)). Тип возвращаемого значения — возвращаемый тип функции. |
Заметки
Лямбда-выражение представляет собой функцию без имени для вычисления и возврата значения.Можно использовать лямбда-выражение везде, где можно использовать тип делегата, за исключением использования в качестве аргумента в RemoveHandler.Дополнительные сведения о делегатах и использовании лямбда-выражений с делегатами см. в разделах Оператор Delegate и Неявное преобразование делегата (Visual Basic).
Синтаксис лямбда-выражений
Синтаксис лямбда-выражения схож с синтаксисом стандартной функции.Различия заключаются в следующем:
Лямбда-выражение не имеет имени.
Лямбда-выражения не могут включать модификаторы, такие как Overloads или Overrides.
Лямбда-выражения не используют предложение As для обозначения типа возвращаемого значения функции.Вместо этого тип выводится из значения, которое вычисляется в теле однострочного лямбда-выражения. или из возвращаемого значения многострочного лямбда-выражения.Например, если тело однострочного лямбда-выражения — Where cust.City = "London", возвращается тип Boolean.
Телом однострокового лямбда-выражения должно быть выражение, а не оператор.Тело может содержать вызов процедуры Function, но не вызов процедуры Sub.
Все параметры должны иметь определенный или выводимый тип данных.
Параметры Optional и Paramarray не разрешены.
Универсальные параметры не разрешены.
Пример
В следующем примере показано два способа создания простых лямбда-выражений.Первый использует Dim для предоставления имени функции.Чтобы вызвать функцию, передайте ее значение в качестве параметра.
Dim add1 = Function(num As Integer) num + 1
' The following line prints 6.
Console.WriteLine(add1(5))
Кроме того, можно и объявить и запустить функцию одновременно.
Console.WriteLine((Function(num As Integer) num + 1)(5))
В следующем примере лямбда-выражение увеличивает значение своего аргумента и возвращает его.В примере показан синтаксис однострокового и многострокового лямбда-выражения для функции.Дополнительные примеры см. в разделе Лямбда-выражения (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))
Лямбда-выражения лежат в основе многих операторов запроса LINQ, и могут быть явно использованы в запросах на основе методов.В следующем примере показан типичный запрос LINQ, с приведением результата запроса в формат метода.
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)
Дополнительные сведения о методах запросов см. в разделе Запросы (Visual Basic).Дополнительные сведения о стандартных операторах запроса см в разделе Общие сведения о стандартных операторах запроса.
См. также
Ссылки
Оператор Function (Visual Basic)
Основные понятия
Лямбда-выражения (Visual Basic)
Операторы и выражения в Visual Basic
Сравнение значений (Visual Basic)
Логические выражения (Visual Basic)
Неявное преобразование делегата (Visual Basic)