Partager via


Option Strict On interdit les conversions implicites de '<type1>' en '<type2>'

Vous avez essayé de convertir un type en un autre type qui peut ne pas être en mesure de contenir la valeur, telle qu’un Long en un Integer, tandis que le commutateur de vérification de type (Instruction Option Strict) est défini Onsur .

Ce type de conversion est appelé conversion restrictive et il est possible qu’elle échoue au moment de l’exécution. Pour cette raison, Option Strict On il interdit les conversions restrictives implicites.

ID d’erreur : BC30512

Pour corriger cette erreur

  1. Déterminez si une conversion d’un type existe depuis <type1> vers <type2>. Si les deux sont des types élémentaires Visual Basic ou si les deux sont des instances de classes, vous pouvez généralement effectuer cette détermination en consultant la table dans Les conversions d’élargissement et de réduction.

  2. Si seule une conversion étroite existe à partir de <type1> , <type2>vous devez utiliser un cast explicite. Les mots clés de la fonction CType et de l’opérateur DirectCast lèvent une exception au moment de l’exécution si la conversion échoue. Le mot clé TryCast Operator s’applique uniquement aux types de référence et retourne Nothing si la conversion échoue.

  3. Si une conversion restrictive existe et que votre programme peut tolérer un échec d’exécution ou que vous êtes certain qu’un échec d’exécution n’est pas possible, vous pouvez spécifier Option Strict Off au début de votre code source. Mais vous devriez toujours placer la conversion dans un Try... Catch... Enfin, bloc d’instructions pour éviter les résultats inattendus ou l’arrêt anticipé de votre programme.

  4. Si aucune conversion n’existe <type1> , <type2>vous devez réévaluer votre logique de programme. Vous pouvez peut-être écrire du code qui peut affecter des valeurs correspondant aux <type2> valeurs anticipées de <type1>.

  5. Si aucune conversion n’existe <type1> depuis et <type2> que l’un des types est une classe ou une structure que vous avez définie, vous pouvez définir un opérateur de conversion de ce type vers ou depuis l’autre type. Pour plus d’informations, consultez Guide pratique pour définir un opérateur de conversion.

  6. Dans tous les cas et en règle générale, vous devez éviter d’utiliser des conversions restrictives, sauf si vous pouvez intercepter les défaillances dans un Catch bloc et les traiter efficacement.

Voir aussi