Option Strict On non consente la riduzione in conversioni implicite di tipi tra il metodo '<methodname>' e il delegato '<delegatename>'

Con Option Strict non è possibile avere una conversione verso un tipo di dati più piccolo tra il tipo di dati di un parametro in un delegato e il corrispondente parametro di una funzione o Sub assegnata a una variabile di quel tipo di delegato. Ad esempio, il delegato della funzione Del ha un parametro di tipo Integer, mentre le funzioni Conversion1, Conversion2e Conversion3 hanno un parametro di tipi numerici diversi.

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  

Dal momento che ha luogo una conversione verso un tipo di dati più grande da Integer a Integer e a Long, le assegnazioni seguenti sono valide.

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

La conversione da Integer a Short è una conversione verso un tipo di dati più piccolo. DI conseguenza, l'assegnazione seguente non è valida.

' Not valid.  
Dim funDel3 As Del = AddressOf Conversion3  

ID errore: BC36663

Per correggere l'errore

  • Modificare il tipo di dati del parametro nel delegato o nel metodo in modo che sia presente la relazione obbligatoria di conversione verso un tipo di dati più grande.

Vedi anche