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

Aggiornamento: novembre 2007

Option Strict On does not allow narrowing in implicit type conversions between method '<methodname>' and delegate '<delegatename>'

Con Option Strict attivata, non è possibile la conversione verso un tipo di dati più piccolo tra il tipo di dati di un parametro in un delegato e il parametro corrispondente di una funzione o Sub assegnata a una variabile di tale tipo di delegato. Ad esempio, il delegato della funzione Del ha un parametro di tipo Integer, mentre le funzioni Conversion1, Conversion2 e 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

Poiché 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. Pertanto, 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 così che esista la relazione obbligatoria di conversione verso un tipo di dati più grande.

Vedere anche

Concetti

Conversione di tipo relaxed del delegato

Conversioni di ampliamento e restrizione

Delegati e operatore AddressOf

Altre risorse

Delegati in Visual Basic