Option Strict On no permite restricciones en conversiones de tipo implícitas entre el método '<methodname>' y el delegado '<delegatename>'

Cuando se activa Option Strict , no se puede realizar una conversión de restricción entre el tipo de datos de un parámetro en un delegado y el parámetro correspondiente de una función o Sub asignado a una variable de ese tipo de delegado. Por ejemplo, el delegado de función Del tiene un parámetro de tipo Integer, y las funciones Conversion1, Conversion2, y Conversion3 tienen un parámetro de tipos numéricos diferentes.

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 no hay una conversión de ampliación de Integer a Integer y a Long, las siguientes asignaciones son válidas.

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

La conversión de Integer a Short es una conversión de reducción. Por consiguiente, la siguiente asignación no es válida.

' Not valid.  
Dim funDel3 As Del = AddressOf Conversion3  

Identificador de error: BC36663

Para corregir este error

  • Cambie el tipo de datos del parámetro en el delegado o el método para que exista la relación de ampliación necesaria.

Consulte también