Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A lambda kifejezés olyan függvény vagy alrutin, amely nem rendelkezik névvel. A lambda kifejezés bárhol használható, ahol egy delegált típus érvényes.
Egysoros lambda függvény létrehozása
Minden olyan helyzetben, amikor egy delegálttípus használható, írja be a kulcsszót
Functionaz alábbi példához hasonlóan:Dim add1 =FunctionZárójelben, közvetlenül a
Functionután, írja be a függvény paramétereit. Figyeljen oda, hogy nem ad meg nevet aFunctionután.Dim add1 = Function(num As Integer)A paraméterlistát követve írjon be egyetlen kifejezést a függvény törzseként. A kifejezés által kiértékelt érték a függvény által visszaadott érték. A visszatérési típus megadásához nem használ
Aszáradékot.Dim add1 = Function(num As Integer) num + 1A lambda kifejezést egy egész szám argumentumának átadásával hívhatja meg.
' The following line prints 6. Console.WriteLine(add1(5))Másik lehetőségként ugyanezt az eredményt az alábbi példa is megvalósítja:
Console.WriteLine((Function(num As Integer) num + 1)(5))
Egysoros lambda kifejezés alrutin létrehozása
Minden olyan helyzetben, ahol delegálási típus használható, írja be a kulcsszót
Subaz alábbi példában látható módon.Dim add1 =SubZárójelben közvetlenül utána
Subírja be az alprogram paramétereit. Figyeljen oda, hogy nem ad meg nevet aSubután.Dim add1 = Sub(msg As String)A paraméterlistát követve írjon be egyetlen utasítást a subroutine törzseként.
Dim writeMessage = Sub(msg As String) Console.WriteLine(msg)A lambda kifejezést sztringargumentum megadásával hívhatja meg.
' The following line prints "Hello". writeMessage("Hello")
Többsoros lambda kifejezésfüggvény létrehozása
Minden olyan helyzetben, ahol delegálási típus használható, írja be a kulcsszót
Functionaz alábbi példában látható módon.Dim add1 =FunctionZárójelben, közvetlenül a
Functionután, írja be a függvény paramétereit. Figyeljen oda, hogy nem ad meg nevet aFunctionután.Dim add1 = Function(index As Integer)Nyomja le az ENTER billentyűt. Az
End Functionutasítás automatikusan hozzáadásra kerül.A függvény törzsében adja hozzá a következő kódot egy kifejezés létrehozásához és az érték visszaadásához. A visszatérési típus megadásához nem használ
Aszáradékot.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 FunctionA lambda kifejezést egy egész szám argumentumának átadásával hívhatja meg.
Dim sortColumn = getSortColumn(0)
Többsoros lambda kifejezés alrutin létrehozása
Minden olyan helyzetben, ahol delegálttípus használható, írja be a kulcsszót
Subaz alábbi példában látható módon:Dim add1 =SubZárójelben közvetlenül utána
Subírja be az alprogram paramétereit. Figyeljen oda, hogy nem ad meg nevet aSubután.Dim add1 = Sub(msg As String)Nyomja le az ENTER billentyűt. Az
End Subutasítás automatikusan hozzáadásra kerül.A függvény törzsén belül adja hozzá a következő kódot, amelyet az alrutin meghívásakor végre kell hajtani.
Dim writeToLog = Sub(msg As String) Dim log As New EventLog() log.Source = "Application" log.WriteEntry(msg) log.Close() End SubA lambda kifejezést sztringargumentum megadásával hívhatja meg.
writeToLog("Application started.")
példa
A lambda kifejezések gyakori használata egy olyan függvény definiálása, amely átadható argumentumként egy olyan paraméterhez, amelynek típusa .Delegate Az alábbi példában a metódus a GetProcesses helyi számítógépen futó folyamatok tömbét adja vissza. A Where osztály Enumerable metódusa egy Boolean delegáltat igényel argumentumként. A példában szereplő lambda kifejezést erre a célra használja a rendszer. Minden olyan folyamathoz ad vissza True, amelynek csak egy szála van, és ezeket a filteredList-ben jelölik ki.
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
Az előző példa egyenértékű a következő kóddal, amely Language-Integrated Query (LINQ) szintaxisban van megírva:
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