Выражение Function (Visual Basic)

Объявляет параметры и код, определяющие лямбда-выражение функции.

Синтаксис

Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] )
  [ statements ]
End Function

Детали

Термин Определение
parameterlist Необязательно. Список имен локальных переменных, представляющих параметры этой процедуры. Скобки должны присутствовать, даже если список пуст. См . список параметров.
expression Обязательный. Одно выражение. Тип выражения — это возвращаемый тип функции.
statements Обязательный. Список операторов, возвращающих значение с помощью инструкции Return . (См. раздел Оператор Return.) Тип возвращаемого значения — возвращаемый тип функции.

Замечания

Лямбда-выражение — это функция без имени, вычисляющего и возвращающего значение. Вы можете использовать лямбда-выражение в любом месте, где можно использовать тип делегата, за исключением аргумента RemoveHandler. Дополнительные сведения об делегатах и использовании лямбда-выражений с делегатами см. в разделе "Оператор делегата" и "Расслабленное преобразование делегатов".

Синтаксис лямбда-выражений

Синтаксис лямбда-выражения напоминает синтаксис стандартной функции. Имеются следующие различия:

  • Лямбда-выражение не имеет имени.

  • Лямбда-выражения не могут иметь модификаторы, например Overloads или Overrides.

  • Лямбда-выражения не используют As предложение для обозначения возвращаемого типа функции. Вместо этого тип выводится из значения, которое вычисляется текстом лямбда-выражения с одной строкой или возвращаемым значением многострочного лямбда-выражения. Например, если текст однострочного лямбда-выражения имеет Where cust.City = "London"тип возврата Boolean.

  • Текст лямбда-выражения одной строки должен быть выражением, а не оператором. Текст может состоять из вызова процедуры функции, но не вызова вложенной процедуры.

  • Все параметры должны иметь указанные типы данных или все должны быть выведены.

  • Необязательные и параметры Paramarray не допускаются.

  • Универсальные параметры не разрешены.

Пример 1

В следующих примерах показаны два способа создания простых лямбда-выражений. Первый использует Dim имя функции. Чтобы вызвать функцию, вы отправляете значение параметра.

Dim add1 = Function(num As Integer) num + 1
' The following line prints 6.
Console.WriteLine(add1(5))

Пример 2

Кроме того, можно объявить и запустить функцию одновременно.

Console.WriteLine((Function(num As Integer) num + 1)(5))

Пример 3

Ниже приведен пример лямбда-выражения, которое увеличивает его аргумент и возвращает значение. В примере показан синтаксис однострочного и многострочного лямбда-выражения для функции. Дополнительные примеры см . в лямбда-выражениях.

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))

Пример 4

Лямбда-выражения лежат в основе многих операторов запросов в 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)

Дополнительные сведения о методах запросов см. в разделе "Запросы". Дополнительные сведения о стандартных операторах запросов см. в разделе "Общие сведения о стандартных операторах запросов".

См. также