Выражение функции
Обновлен: Ноябрь 2007
Объявляет параметры и код, который определяет лямбда-выражение.
Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] ) _
expression
Части
parameterlist
Необязательно. Список имен локальных переменных, представляющих параметры этой процедуры. Круглые скобки должны присутствовать даже если список пуст. См. раздел Список параметров.expression
Обязательный. Одиночное выражение. Значение выражения определяет тип функции и значение, возвращаемое при вызове функции.
Заметки
Лямбда-выражения является функцией без имени, которая вычисляет и возвращает одиночное значение. Можно использовать лямбда-выражение везде, где можно использовать тип делегата, за исключением использования в качестве аргумента в RemoveHandler. Дополнительные сведения о делегатах и использовании лямбда-выражений с делегатами см. в разделах Оператор Delegate и Ослабленное преобразование делегата.
Синтаксис лямбда-выражений
Синтаксис лямбда-выражения схож с синтаксисом стандартной функции. Различия заключаются в следующем:
Лямбда-выражение не имеет имени.
Лямбда-выражения не могут включать модификаторы, такие как Overloads или Overrides.
Лямбда-выражения не используют предложение As для обозначения типа возвращаемого значения функции. Вместо этого тип выводится из значения, которое вычисляется в теле лямбда-выражения. Например, если тело лямбда-выражения — Where cust.City = "London", возвращается тип Boolean.
Тело функции должно быть выражением, а не оператором. Тело может содержать вызов процедуры Function, но не вызов процедуры Sub.
Отсутствует оператор Return. Значение, возвращаемое функцией, является значением выражения в теле функции.
Отсутствует оператор End Function.
Все параметры должны иметь определенный или выводимый тип данных.
Параметры 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))
Лямбда-выражения лежат в основе многих операторов запроса LINQ (Language-Integrated Query), и могут быть явно использованы в запросах на основе методов. В следующем примере показан типичный запрос 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). Дополнительные сведения о стандартных операторах запроса см в разделе Общие сведения о стандартных операторах запроса.
См. также
Основные понятия
Операторы и выражения в Visual Basic
Ослабленное преобразование делегата