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.
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.
' 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.
' Not valid.
Dim funDel3 As Del = AddressOf Conversion3
ID do erro: BC36663
- 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.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: