Delen via


Procedure: Een Lambda-expressie maken (Visual Basic)

Een lambda-expressie is een functie of subroutine die geen naam heeft. Een lambda-expressie kan worden gebruikt waar een gemachtigdentype geldig is.

Een lambda-expressiefunctie met één regel maken

  1. In elke situatie waarin een gemachtigde kan worden gebruikt, typt u het trefwoord Function, zoals in het volgende voorbeeld:

    Dim add1 = Function

  2. Typ tussen haakjes, direct erna Function, de parameters van de functie. U ziet dat u geen naam opgeeft na Function.

    Dim add1 = Function (num As Integer)

  3. Typ na de lijst met parameters één expressie als hoofdtekst van de functie. De waarde die door de expressie wordt geëvalueerd, is de waarde die door de functie wordt geretourneerd. U gebruikt As geen component om het retourtype op te geven.

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

    U roept de lambda-expressie aan door een geheel getalargument door te geven.

    ' The following line prints 6.
    Console.WriteLine(add1(5))
    
  4. Hetzelfde resultaat wordt ook bereikt door het volgende voorbeeld:

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

Een subroutine met één regel lambda-expressie maken

  1. In elke situatie waarin een gemachtigde kan worden gebruikt, typt u het trefwoord Sub, zoals wordt weergegeven in het volgende voorbeeld.

    Dim add1 = Sub

  2. Typ de parameters van de subroutine in haakjes, direct erna Sub. U ziet dat u geen naam opgeeft na Sub.

    Dim add1 = Sub (msg As String)

  3. Typ na de lijst met parameters één instructie als hoofdtekst van de subroutine.

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

    U roept de lambda-expressie aan door een tekenreeksargument door te geven.

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

Een lambda-expressiefunctie met meerdere regels maken

  1. In elke situatie waarin een gemachtigde kan worden gebruikt, typt u het trefwoord Function, zoals wordt weergegeven in het volgende voorbeeld.

    Dim add1 = Function

  2. Typ tussen haakjes, direct erna Function, de parameters van de functie. U ziet dat u geen naam opgeeft na Function.

    Dim add1 = Function (index As Integer)

  3. Druk op ENTER. De End Function instructie wordt automatisch toegevoegd.

  4. Voeg in de hoofdtekst van de functie de volgende code toe om een expressie te maken en de waarde te retourneren. U gebruikt As geen component om het retourtype op te geven.

    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
    

    U roept de lambda-expressie aan door een geheel getalargument door te geven.

    Dim sortColumn = getSortColumn(0)
    

Een subroutine met meerdere regels lambda-expressie maken

  1. In elk geval waarin een gemachtigde kan worden gebruikt, typt u het trefwoord Sub, zoals wordt weergegeven in het volgende voorbeeld:

    Dim add1 = Sub

  2. Typ de parameters van de subroutine in haakjes, direct erna Sub. U ziet dat u geen naam opgeeft na Sub.

    Dim add1 = Sub (msg As String)

  3. Druk op ENTER. De End Sub instructie wordt automatisch toegevoegd.

  4. Voeg in de hoofdtekst van de functie de volgende code toe die moet worden uitgevoerd wanneer de subroutine wordt aangeroepen.

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

    U roept de lambda-expressie aan door een tekenreeksargument door te geven.

    writeToLog("Application started.")
    

Opmerking

Een gemeenschappelijk gebruik van lambda-expressies is het definiëren van een functie die kan worden doorgegeven als het argument voor een parameter waarvan het type is Delegate. In het volgende voorbeeld retourneert de GetProcesses methode een matrix van de processen die op de lokale computer worden uitgevoerd. De Where methode van de Enumerable klasse vereist een Boolean gemachtigde als argument. De lambda-expressie in het voorbeeld wordt hiervoor gebruikt. Het retourneert True voor elk proces met slechts één thread en die zijn geselecteerd in 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

Het vorige voorbeeld is gelijk aan de volgende code, die is geschreven in de syntaxis van Language-Integrated Query (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

Zie ook