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 tidak akan dihapus dari penanganan aktivitas ini. Tetapkan ekspresi lambda ke variabel dan gunakan variabel untuk menambahkan dan menghapus peristiwa.
Saat ekspresi lambda digunakan dengan penanganan aktivitas, Anda mungkin tidak melihat perilaku yang Anda harapkan. Pengkompilasi menghasilkan metode baru untuk setiap definisi ekspresi lambda, bahkan jika keduanya identik. Oleh karena itu, kode berikut menampilkan False.
Module Module1
Sub Main()
Dim fun1 As ChangeInteger = Function(p As Integer) p + 1
Dim fun2 As ChangeInteger = Function(p As Integer) p + 1
Console.WriteLine(fun1 = fun2)
End Sub
Delegate Function ChangeInteger(ByVal x As Integer) As Integer
End Module
Ketika ekspresi lambda digunakan dengan penanganan aktivitas, ini dapat menyebabkan hasil yang tidak terduga. Dalam contoh berikut, ekspresi lambda yang ditambahkan oleh AddHandler tidak dihapus oleh RemoveHandler pernyataan.
Module Module1
Event ProcessInteger(ByVal x As Integer)
Sub Main()
' The following line adds one listener to the event.
AddHandler ProcessInteger, Function(m As Integer) m
' The following statement searches the current listeners
' for a match to remove. However, this lambda is not the same
' as the previous one, so nothing is removed.
RemoveHandler ProcessInteger, Function(m As Integer) m
End Sub
End Module
Secara default, pesan ini adalah peringatan. Untuk informasi selengkapnya tentang cara menyembunyikan peringatan atau memperlakukan peringatan sebagai kesalahan, lihat Mengonfigurasi Peringatan di Visual Basic.
ID Kesalahan: BC42326
Untuk memperbaiki kesalahan ini
Untuk menghindari peringatan dan menghapus ekspresi lambda, tetapkan ekspresi lambda ke variabel dan gunakan variabel dalam AddHandler pernyataan dan RemoveHandler , seperti yang ditunjukkan dalam contoh berikut.
Module Module1
Event ProcessInteger(ByVal x As Integer)
Dim PrintHandler As ProcessIntegerEventHandler
Sub Main()
' Assign the lambda expression to a variable.
PrintHandler = Function(m As Integer) m
' Use the variable to add the listener.
AddHandler ProcessInteger, PrintHandler
' Use the variable again when you want to remove the listener.
RemoveHandler ProcessInteger, PrintHandler
End Sub
End Module