A opção Strict On não permite o estreitamento em conversões de tipo implícitas entre o método '<methodname>' e o delegado '<delegatename>'

Com Option Strict on, você não pode ter uma conversão de estreitamento entre o tipo de dados de um parâmetro em um delegado e o parâmetro correspondente de uma função ou Sub atribuído a uma variável desse tipo de delegado. Por exemplo, o delegado Del de função tem um parâmetro do tipo Integer, e funções Conversion1, Conversion2e Conversion3 tem um parâmetro de diferentes tipos numéricos.

Delegate Function Del(ByVal p As Integer) As String  
  
Function Conversion1(ByVal n As Integer) As String  
    Return "Valid"  
End Function  
  
Function Conversion2(ByVal n As Long) As String  
    Return "Valid"  
End Function  
  
Function Conversion3(ByVal n As Short) As String  
    Return "Not valid"  
End Function  

Como há uma conversão crescente de Integer para Integer e para Long, as atribuições a seguir são válidas.

' Valid.  
Dim funDel1 As Del = AddressOf Conversion1  
Dim funDel2 As Del = AddressOf Conversion2  

A conversão de Integer para Short é uma conversão estreita. Portanto, a atribuição a seguir não é válida.

' Not valid.  
Dim funDel3 As Del = AddressOf Conversion3  

ID de erro: BC36663

Para corrigir este erro

  • Altere o tipo de dados do parâmetro no delegado ou no método para que a relação de ampliação necessária exista.

Consulte também