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
W sytuacji, gdzie mogłyby używany typ delegata, wpisz słowo kluczowe Function, jak w poniższym przykładzie:
Dim add1 = Function
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)
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))
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
W sytuacji, gdzie mogłyby używany typ delegata, wpisz słowo kluczowe Sub, jak pokazano w poniższym przykładzie.
Dim add1 = Sub
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)
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
W sytuacji, gdzie mogłyby używany typ delegata, wpisz słowo kluczowe Function, jak pokazano w poniższym przykładzie.
Dim add1 = Function
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)
Naciśnij klawisz ENTER.End Function Instrukcji jest automatycznie dodawana.
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
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
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)
Naciśnij klawisz ENTER.End Sub Instrukcji jest automatycznie dodawana.
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)
Koncepcje
Lambda — Wyrażenia (Visual Basic)
Wprowadzenie do LINQ w Visual Basic