Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
Messaggio di errore
L'espressione lambda non verrà rimossa da questo gestore eventi. Assegnare l'espressione lambda a una variabile e utilizzare la variabile per aggiungere e rimuovere l'evento.
Lambda expression will not be removed from this event handler. Assign the lambda expression to a variable and use the variable to add and remove the event.
Quando le espressioni lambda vengono utilizzate con i gestori eventi, è possibile non vedere il comportamento previsto. Il compilatore genera un nuovo metodo per ogni definizione dell'espressione lambda, anche se sono identiche. Pertanto, nel codice seguente verrà visualizzato 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
Quando le espressioni lambda vengono utilizzate con i gestori eventi, è possibile che vengano restituiti risultati imprevisti. Nell'esempio seguente l'espressione lambda aggiunta da AddHandler non viene rimossa dall'istruzione RemoveHandler.
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
Per impostazione predefinita, si tratta di un messaggio di avviso. Per ulteriori informazioni su come nascondere gli avvisi o considerarli come errori, vedere Configurazione degli avvisi in Visual Basic.
ID errore: BC42326
Per correggere l'errore
Per evitare la visualizzazione dell'avviso e rimuovere l'espressione lambda, assegnare l'espressione lambda a una variabile e utilizzare la variabile nelle istruzioni AddHandler e RemoveHandler, come mostrato nell'esempio seguente.
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