Option Strict On n'autorise pas les conversions restrictives lors des conversions de types implicites entre la méthode '<NomMéthode>' et le délégué '<NomDélégué>'
Mise à jour : novembre 2007
Option Strict On does not allow narrowing in implicit type conversions between method '<methodname>' and delegate '<delegatename>'
Avec Option Strict On, vous ne pouvez pas avoir de conversion restrictive entre le type de données d'un paramètre dans un délégué et le paramètre correspondant d'une fonction ou d'un Sub assigné à une variable de ce type délégué. Par exemple, le délégué de fonction Del a un paramètre de type Integer et les fonctions Conversion1, Conversion2 et Conversion3 ont un paramètre de types numériques différents.
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
Étant donné qu'il existe une conversion étendue de Integer en Integer et Long, les assignations suivantes sont valides.
' Valid.
Dim funDel1 As Del = AddressOf Conversion1
Dim funDel2 As Del = AddressOf Conversion2
La conversion de Integer en Short est une conversion restrictive. L'assignation suivante n'est donc pas valide.
' Not valid.
Dim funDel3 As Del = AddressOf Conversion3
ID d'erreur : BC36663
Pour corriger cette erreur
- Modifiez le type de données du paramètre dans le délégué ou la méthode afin que la relation d'élargissement requise existe.
Voir aussi
Concepts
Conversion simplifiée des délégués
Conversions étendues et restrictives
Délégués et opérateur AddressOf