Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Ekspresi lambda adalah fungsi atau subroutine yang tidak memiliki nama. Ekspresi lambda dapat digunakan di mana pun jenis delegasi valid.
Untuk membuat fungsi ekspresi lambda satu baris
Dalam situasi apa pun di mana jenis delegasi dapat digunakan, ketik kata kunci
Function, seperti dalam contoh berikut:Dim add1 =FunctionDalam tanda kurung, langsung setelah
Function, ketik parameter fungsi. Perhatikan bahwa Anda tidak menentukan nama setelahFunction.Dim add1 = Function(num As Integer)Setelah daftar parameter, ketik ekspresi tunggal sebagai isi fungsi. Nilai yang dievaluasi ekspresi adalah nilai yang dikembalikan oleh fungsi. Anda tidak menggunakan klausa
Asuntuk menentukan jenis pengembalian.Dim add1 = Function(num As Integer) num + 1Anda memanggil ekspresi lambda dengan memberikan argumen bilangan bulat.
' The following line prints 6. Console.WriteLine(add1(5))Atau, hasil yang sama dicapai dengan contoh berikut:
Console.WriteLine((Function(num As Integer) num + 1)(5))
Untuk membuat subrutin ekspresi lambda satu-baris
Dalam situasi apa pun di mana jenis delegasi dapat digunakan, ketik kata kunci
Sub, seperti yang ditunjukkan dalam contoh berikut.Dim add1 =SubDalam tanda kurung, langsung setelah
Sub, ketik parameter subroutine. Perhatikan bahwa Anda tidak menentukan nama setelahSub.Dim add1 = Sub(msg As String)Setelah daftar parameter, ketik satu pernyataan sebagai isi subroutine.
Dim writeMessage = Sub(msg As String) Console.WriteLine(msg)Anda memanggil ekspresi lambda dengan memberikan argumen string.
' The following line prints "Hello". writeMessage("Hello")
Untuk membuat fungsi ekspresi lambda multibaris
Dalam situasi apa pun di mana jenis delegasi dapat digunakan, ketik kata kunci
Function, seperti yang ditunjukkan dalam contoh berikut.Dim add1 =FunctionDalam tanda kurung, langsung setelah
Function, ketik parameter fungsi. Perhatikan bahwa Anda tidak menentukan nama setelahFunction.Dim add1 = Function(index As Integer)Tekan ENTER. Pernyataan
End Functionditambahkan secara otomatis.Dalam isi fungsi, tambahkan kode berikut untuk membuat ekspresi dan mengembalikan nilai. Anda tidak menggunakan klausa
Asuntuk menentukan jenis pengembalian.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 FunctionAnda memanggil ekspresi lambda dengan memberikan argumen bilangan bulat.
Dim sortColumn = getSortColumn(0)
Untuk membuat subrutin ekspresi lambda yang multibaris
Dalam situasi apa pun di mana jenis delegasi dapat digunakan, ketik kata kunci
Sub, seperti yang ditunjukkan dalam contoh berikut:Dim add1 =SubDalam tanda kurung, langsung setelah
Sub, ketik parameter subroutine. Perhatikan bahwa Anda tidak menentukan nama setelahSub.Dim add1 = Sub(msg As String)Tekan ENTER. Pernyataan
End Subditambahkan secara otomatis.Dalam isi fungsi, tambahkan kode berikut untuk dijalankan saat subroutine dipanggil.
Dim writeToLog = Sub(msg As String) Dim log As New EventLog() log.Source = "Application" log.WriteEntry(msg) log.Close() End SubAnda memanggil ekspresi lambda dengan memberikan argumen string.
writeToLog("Application started.")
Contoh
Penggunaan umum ekspresi lambda adalah untuk menentukan fungsi yang dapat diteruskan sebagai argumen untuk parameter yang jenisnya adalah Delegate. Dalam contoh berikut, GetProcesses metode mengembalikan array proses yang berjalan di komputer lokal. Metode Where dari kelas Enumerable memerlukan delegate Boolean sebagai argumennya. Ekspresi lambda dalam contoh digunakan untuk tujuan tersebut. Ini mengembalikan True untuk setiap proses yang hanya memiliki satu utas, dan proses-proses tersebut dipilih di 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
Contoh sebelumnya setara dengan kode berikut, yang ditulis dalam sintaks 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