Sdílet prostřednictvím


Postupy: Vytvoření výrazu lambda (Visual Basic)

A lambda výraz je funkce nebo podprogram, který nemá název.Lambda výraz lze použít vždy, když je platný typ delegáta.

Vytvořte jeden řádek lambda výraz funkce

  1. V každé situaci, kdy nelze použít typ delegáta, zadejte klíčové slovo Function, jako v následujícím příkladu:

    Dim add1 = Function

  2. V závorkách přímo za Function, zadejte parametry funkce.Všimněte si, že nezadáte název po Function.

    Dim add1 = Function (num As Integer)

  3. Po seznamu parametr zadejte jeden výraz jako hlavní funkce.Je vyhodnocen jako hodnota hodnotu vrácenou funkcí.Nepoužívejte As klauzule určit návratový typ.

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

    Můžete volání lambda výraz ve argument celého čísla.

    ' The following line prints 6.
    Console.WriteLine(add1(5))
    
  4. Alternativně je dosaženo stejného výsledku v následujícím příkladu:

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

Vytvořte podprogram jeden řádek lambda výraz

  1. V každé situaci, kdy nelze použít typ delegáta, zadejte klíčové slovo Sub, jak ukazuje následující příklad.

    Dim add1 = Sub

  2. V závorkách přímo za Sub, zadejte parametry podprogramu.Všimněte si, že nezadáte název po Sub.

    Dim add1 = Sub (msg As String)

  3. Po seznamu parametr zadejte jako hlavní podprogram jednoho příkazu.

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

    Můžete volání lambda výraz ve řetězcový argument.

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

Vytvoření výrazu funkce multiline lambda

  1. V každé situaci, kdy nelze použít typ delegáta, zadejte klíčové slovo Function, jak ukazuje následující příklad.

    Dim add1 = Function

  2. V závorkách přímo za Function, zadejte parametry funkce.Všimněte si, že nezadáte název po Function.

    Dim add1 = Function (index As Integer)

  3. Stiskněte klávesu ENTER.End Function Příkaz automaticky přidán.

  4. V těle funkce přidejte následující kód pro vytváření výrazů a vrátí hodnotu.Nepoužívejte As klauzule určit návratový typ.

    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
    

    Můžete volání lambda výraz ve argument celého čísla.

    Dim sortColumn = getSortColumn(0)
    

Vytvořte podprogram víceřádkové lambda výraz

  1. V každé situaci, kdy nelze použít typ delegáta, zadejte klíčové slovo Sub, jak ukazuje následující příklad:

    Dim add1 = Sub

  2. V závorkách přímo za Sub, zadejte parametry podprogramu.Všimněte si, že nezadáte název po Sub.

    Dim add1 = Sub(msg As String)

  3. Stiskněte klávesu ENTER.End Sub Příkaz automaticky přidán.

  4. V těle funkce přidejte následující kód spustit při podprogram.

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

    Můžete volání lambda výraz ve řetězcový argument.

    writeToLog("Application started.")
    

Příklad

Běžné použití lambda výrazů je definovat funkci, která lze předat jako argument pro parametr typu Delegate.V následujícím příkladu GetProcesses metoda vrátí matici procesy spuštěné v místním počítači.Where``1 Metoda z Enumerable vyžaduje třídu Boolean delegovat jako svůj argument.Lambda výraz v příkladu je použit pro tento účel.Vrátí True pro každý proces, který má pouze jednoho podprocesu a ty, které jsou vybrány v 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

Předchozí příklad je ekvivalentní následující kód, který je zapsán v LINQ (Language-Integrated Query) syntaxe:

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

Viz také

Úkoly

Postupy: Předání procedur jiné proceduře v jazyce Visual Basic

Referenční dokumentace

Function – příkaz (Visual Basic)

Sub – příkaz (Visual Basic)

Delegate – příkaz

Enumerable

Koncepty

Lambda – výrazy (Visual Basic)

Představení technologie LINQ v jazyce Visual Basic

Další zdroje

Delegáti (Visual Basic)