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