Partilhar via


Option Strict On não permite limitação nas conversões de tipo implícito entre o método '<methodname>' e '<delegatename>' delegado

Com Option Strict 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ído a uma variável do tipo delegado. Por exemplo, função delegado Del tem um parâmetro de tipo Integere funções Conversion1, Conversion2, e Conversion3 ter 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

Porque há uma conversão de expansão de Integer para Integer e Long, as seguintes atribuições são válido.

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

A conversão de Integer para Short é uma conversão de restrição. Portanto, a atribuição a seguir inválido é 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 o método para que exista a relação de expansão necessária.

Consulte também

Conceitos

Conversão de delegado reduzida

Conversões Ampliadoras e Redutoras

Delegados e o operador AddressOf

Outros recursos

Delegados no Visual Basic