Ler em inglês

Compartilhar via


Option Strict On não permite a limitação em conversões de tipo implícito entre o método '<methodname>' 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 função ou Sub atribuída a uma variável desse tipo de delegado. Por exemplo, o delegado Del da função tem um parâmetro de tipo Integer, e as funções Conversion1, Conversion2 e Conversion3 têm um parâmetro de diferentes tipos numéricos.

VB
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 de expansão de Integer em Integer e em Long, as atribuições a seguir são válidas.

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

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

VB
' Not valid.  
Dim funDel3 As Del = AddressOf Conversion3  

ID do 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.

Confira também