Поделиться через


Выражение функции

Обновлен: Ноябрь 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

Общие сведения об инструкциях

Сравнения значений

Логические выражения

Ослабленное преобразование делегата

Ссылки

Оператор Function (Visual Basic)

Оператор If