다음을 통해 공유


함수 식

업데이트: 2007년 11월

람다 식을 정의하는 코드 및 매개 변수를 선언합니다.

Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] ) _
    expression

구성 요소

  • parameterlist
    선택적 요소. 이 프로시저의 매개 변수를 나타내는 지역 변수 이름의 목록입니다. 목록이 비어 있는 경우에도 괄호는 있어야 합니다. 자세한 내용은 매개 변수 목록을 참조하십시오.

  • expression
    필수적 요소. 단일 식입니다. 식의 값에 의해 함수의 형식과 함수 호출 시 반환되는 값이 결정됩니다.

설명

람다 식은 단일 값을 계산하고 반환하는 이름이 없는 함수입니다. 대리자 형식을 사용할 수 있는 모든 위치에 람다 식을 사용할 수 있습니다. 단 RemoveHandler에 대한 인수로는 사용할 수 없습니다. 대리자에 대한 정보 및 대리자와 함께 람다 식을 사용하는 방법은 Delegate 문완화된 대리자 변환을 참조하십시오.

람다 식 구문

람다 식의 구문은 표준 함수의 구문과 유사합니다. 차이점은 다음과 같습니다.

  • 람다 식에는 이름이 없습니다.

  • 람다 식에는 Overloads 또는 Overrides와 같은 한정자가 있을 수 없습니다.

  • 람다 식은 As 절을 사용하여 함수의 반환 형식을 지정하지 않습니다. 대신 람다 식의 본문이 평가되는 값에서 형식이 유추됩니다. 예를 들어 람다 식의 본문이 Where cust.City = "London"이면 반환 형식은 Boolean입니다.

  • 함수의 본문은 문이 아니라 식이어야 합니다. 본문은 하위 프로시저에 대한 호출이 아니라 함수 프로시저에 대한 호출로 구성되어야 합니다.

  • 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(통합 언어 쿼리)의 여러 쿼리 연산자의 기반이 되며 메서드 기반 쿼리에서 명시적으로 사용할 수 있습니다. 다음 예제에서는 일반적인 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 연산자