다음을 통해 공유


방법: 람다 식 만들기(Visual Basic)

람다 식은 이름이 없는 함수 또는 서브루틴입니다. 대리자 형식이 유효한 모든 곳에서 람다 식을 사용할 수 있습니다.

한 줄로 된 람다 식 함수를 만들려면

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

한 줄로 된 람다 식 서브루틴을 만들려면

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

    Dim add1 = Sub

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

    Dim add1 = Sub (msg As String)

  3. 매개 변수 목록 다음에 단일 문을 서브루틴의 본문으로 입력합니다.

    Dim writeMessage = Sub(msg As String) Console.WriteLine(msg)
    

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

    ' The following line prints "Hello".
    writeMessage("Hello")
    

여러 줄로 된 람다 식 함수를 만들려면

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

    Dim add1 = Function

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

    Dim add1 = Function (index As Integer)

  3. Enter 키를 누릅니다. End Function 문이 자동으로 추가됩니다.

  4. 함수 본문 내에 식을 만들고 값을 반환할 다음 코드를 추가합니다. As 절을 사용하여 반환 데이터 형식을 지정하지 마십시오.

    Dim getSortColumn = Function(index As Integer)
                            Select Case index
                                Case 0
                                    Return "FirstName"
                                Case 1
                                    Return "LastName"
                                Case 2
                                    Return "CompanyName"
                                Case Else
                                    Return "LastName"
                            End Select
                        End Function
    

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

    Dim sortColumn = getSortColumn(0)
    

여러 줄로 된 람다 식 서브루틴을 만들려면

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

    Dim add1 = Sub

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

    Dim add1 = Sub(msg As String)

  3. Enter 키를 누릅니다. End Sub 문이 자동으로 추가됩니다.

  4. 함수 본문 내에 서브루틴 호출 시 실행할 다음 코드를 추가합니다.

    Dim writeToLog = Sub(msg As String)
                         Dim log As New EventLog()
                         log.Source = "Application"
                         log.WriteEntry(msg)
                         log.Close()
                     End Sub
    

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

    writeToLog("Application started.")
    

예제

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

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에서 프로시저에 다른 프로시저 전달

참조

Function 문(Visual Basic)

Sub 문(Visual Basic)

Delegate 문

Enumerable

개념

람다 식(Visual Basic)

Visual Basic의 LINQ 소개

기타 리소스

대리자(Visual Basic)