다음을 통해 공유


방법: 람다 식 만들기

업데이트: 2007년 11월

람다 식은 단일 식을 계산하고 해당 값을 반환하는 이름이 없는 함수입니다.

람다 식을 만들려면

  1. 대리자 형식을 사용할 수 있는 경우 메서드 내에 다음 예제와 같이 Function 키워드를 입력합니다.

    Dim add1 = Function

  2. Function 바로 뒤에 있는 괄호 안에 함수의 매개 변수를 입력합니다. Function 뒤에는 이름을 지정하지 않습니다.

    Dim add1 = Function (num As Integer)

  3. 매개 변수 목록 다음에 단일 식을 함수의 본문으로 입력합니다. 식에서 계산하는 값은 함수에서 반환된 값입니다. As 절을 사용하여 반환 데이터 형식을 지정하지 마십시오.

    Dim add1 = Function(num As Integer) num + 1
    

    정수 인수를 전달하여 람다 식을 호출합니다.

    ' The following line prints 6.
    Console.WriteLine(add1(5))
    
  4. 또는 다음 예제에 의해 같은 결과가 나올 수 있습니다.

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

예제

람다 식의 일반적인 사용은 형식이 Delegate인 매개 변수에 대해 인수로 전달될 수 있는 함수를 정의하는 것입니다. 다음 예제에서 GetProcesses 메서드는 로컬 컴퓨터에서 실행되는 프로세스의 배열을 반환합니다. Enumerable 클래스의 Where 메서드에는 Boolean 대리자가 인수로 필요합니다. 이 예제의 람다 식이 해당 용도로 전송됩니다. 하나의 스레드만 있는 각 프로세스에 대해 True를 반환하고 filteredQuery에서 선택됩니다.

Sub Main()

    ' Create an array of running processes.
    Dim procList As Process() = Diagnostics.Process.GetProcesses

    ' Return the processes that have one thread. Notice that the type
    ' of the parameter does not have to be explicitly stated.
    Dim filteredList = procList.Where(Function(p) p.Threads.Count = 1)

    ' Display the name of each selected process.
    For Each proc In filteredList
        MsgBox(proc.ProcessName)
    Next

End Sub

앞의 예제는 LINQ(통합 언어 쿼리) 구문으로 작성된 다음 코드와 동일합니다.

Sub Main()

    Dim filteredQuery = From proc In Diagnostics.Process.GetProcesses _
                        Where proc.Threads.Count = 1 _
                        Select proc

    For Each proc In filteredQuery
        MsgBox(proc.ProcessName)
    Next
End Sub

참고 항목

작업

방법: Visual Basic에서 프로시저에 다른 프로시저 전달

개념

대리자 및 AddressOf 연산자

람다 식

Visual Basic의 LINQ 소개

참조

Function 문(Visual Basic)

Delegate 문

Enumerable