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

Autres ressources

Délégués en Visual Basic