Option Strict On não permite a limitação em conversões de tipo implícito entre a expressão lambda e o delegado '<delegatename>'

Com Option Strict ativo, você não pode ter uma conversão de restrição entre o tipo de dados de um parâmetro em um delegado e o parâmetro correspondente de uma expressão lambda atribuída a uma variável desse tipo de delegado. Por exemplo, no código a seguir, o delegado Del tem um parâmetro do tipo Integer.

Delegate Function Del(ByVal p As Integer) As String  

Portanto, o parâmetro correspondente de qualquer expressão lambda atribuída a uma variável do tipo Del pode ser um Integer ou qualquer tipo de dados do qual haja uma conversão de expansão de Integer.

' Valid.  
Dim example1 As Del = Function(n As Integer) "Valid"  
Dim example2 As Del = Function(n As Long) "Valid"  
  
' Not valid.  
Dim example3 As Del = Function(n As Short) "Not Valid"  

ID do erro: BC36662

Para corrigir este erro

  • Altere o tipo de dados do parâmetro no delegado ou na expressão lambda para que a relação de expansão necessária exista.

  • Não especifique tipos de dados de parâmetro na expressão lambda. Os tipos serão inferidos dos parâmetros correspondentes no delegado.

Dim example4 As Del = Function(n) "Valid"  

Confira também