Udostępnij za pośrednictwem


Porady: tworzenie wyrażenia lambda (Visual Basic)

A wyrażenie lambda jest funkcji lub podprocedury, który nie ma nazwy.Wyrażenie lambda można tam, gdzie typ delegata jest nieprawidłowa.

Aby utworzyć funkcję wyrażenie lambda jednowierszowy

  1. W sytuacji, gdzie mogłyby używany typ delegata, wpisz słowo kluczowe Function, jak w poniższym przykładzie:

    Dim add1 = Function

  2. W nawiasach bezpośrednio po Function, wpisz parametry funkcji.Należy zauważyć, że nie określisz nazwę po Function.

    Dim add1 = Function (num As Integer)

  3. Po z listy wartości parametru typu pojedyncze wyrażenie jako treść funkcji.Wyrażenie ma wartość jest wartością zwróconą przez funkcję.Nie używać As klauzuli, aby określić typ zwracany.

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

    Wywołujemy wyrażenie lambda przekazując argument liczby całkowitej.

    ' The following line prints 6.
    Console.WriteLine(add1(5))
    
  4. Alternatywnie ten sam wynik jest realizowane w następującym przykładzie:

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

Aby utworzyć podprocedurę wyrażenie lambda jednowierszowy

  1. W sytuacji, gdzie mogłyby używany typ delegata, wpisz słowo kluczowe Sub, jak pokazano w poniższym przykładzie.

    Dim add1 = Sub

  2. W nawiasach bezpośrednio po Sub, wpisz parametry podprocedury.Należy zauważyć, że nie określisz nazwę po Sub.

    Dim add1 = Sub (msg As String)

  3. W następstwie listy parametrów wpisz pojedynczą instrukcją jako organ podprocedury.

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

    Wywołujemy wyrażenie lambda przekazanie argumentu ciąg.

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

Aby utworzyć funkcji wyrażenie lambda wielowierszowy

  1. W sytuacji, gdzie mogłyby używany typ delegata, wpisz słowo kluczowe Function, jak pokazano w poniższym przykładzie.

    Dim add1 = Function

  2. W nawiasach bezpośrednio po Function, wpisz parametry funkcji.Należy zauważyć, że nie określisz nazwę po Function.

    Dim add1 = Function (index As Integer)

  3. Naciśnij klawisz ENTER.End Function Instrukcji jest automatycznie dodawana.

  4. W treści funkcji Dodaj następujący kod do tworzenia wyrażeń i zwrócić wartość.Nie używać As klauzuli, aby określić typ zwracany.

    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
    

    Wywołujemy wyrażenie lambda przekazując argument liczby całkowitej.

    Dim sortColumn = getSortColumn(0)
    

Aby utworzyć podprocedurę wyrażenie lambda wielowierszowy

  1. W sytuacji, gdzie mogłyby używany typ delegata, wpisz słowo kluczowe Sub, jak pokazano w następującym przykładzie:

    Dim add1 = Sub

  2. W nawiasach bezpośrednio po Sub, wpisz parametry podprocedury.Należy zauważyć, że nie określisz nazwę po Sub.

    Dim add1 = Sub(msg As String)

  3. Naciśnij klawisz ENTER.End Sub Instrukcji jest automatycznie dodawana.

  4. W treści funkcji Dodaj następujący kod do wykonania po wywołaniu podprocedury.

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

    Wywołujemy wyrażenie lambda przekazanie argumentu ciąg.

    writeToLog("Application started.")
    

Przykład

Powszechnym zastosowaniem wyrażenia lambda jest określenie funkcji, które mogą być przekazywane jako argument dla parametru, którego typ jest w Delegate.W poniższym przykładzie GetProcesses metoda zwraca tablicę procesów uruchomionych na komputerze lokalnym.Where``1 Metody z Enumerable wymaga klasy Boolean przekazać jako argumentu.W przykładzie wyrażenie lambda jest używany do tego celu.Zwraca True dla każdego procesu, który ma tylko jeden wątek, a te są zaznaczone w 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

Poprzedni przykład odpowiada następujący kod, który jest zapisywany w Zapytanie o języku zintegrowanym (LINQ) składni:

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

Zobacz też

Zadania

Porady: przekazywanie procedur do innej procedury w Visual Basic

Informacje

Function — Instrukcja (Visual Basic)

Sub — Instrukcja (Visual Basic)

Delegate — Instrukcja

Enumerable

Koncepcje

Lambda — Wyrażenia (Visual Basic)

Wprowadzenie do LINQ w Visual Basic

Inne zasoby

Delegaty (Visual Basic)