Partage via


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

Vous avez tenté de convertir un type en un autre type qui ne peut peut-être pas contenir la valeur, comme un Long en Integer, tandis que le commutateur de vérification de type (Option Strict Statement) a la valeur On.

Ce type de conversion, appelé conversion restrictive, est susceptible d’échouer au moment de l’exécution. Pour cette raison, Option Strict On interdit les conversions restrictives implicites.

ID d’erreur : BC30512

Pour corriger cette erreur

  1. Déterminez si une conversion de n’importe quel type existe de <type1> à <type2>. Si les deux sont des types élémentaires Visual Basic, ou des instances de classes, vous pouvez généralement effectuer cette détermination en consultant la table dans Conversions étendues et restrictives.

  2. S’il existe uniquement une conversion restrictive de <type1> à <type2>, vous devez utiliser un cast explicite. Les mots clés CType Function et DirectCast Operator lèvent une exception au moment de l’exécution si la conversion échoue. Le mot clé TryCast Operator s’applique uniquement aux types référence et retourne Nothing en cas d’échec de la conversion.

  3. Si une conversion restrictive existe et que votre programme peut tolérer une défaillance du runtime, ou si vous avez la certitude qu’aucune défaillance du runtime ne peut se produire, vous pouvez spécifier Option Strict Off au début de votre code source. Mais vous devez toujours englober la conversion dans un bloc Try...Catch...Finally (instruction) pour éviter des résultats inattendus ou l’arrêt prématuré de votre programme.

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

  5. Si aucune conversion n’est effectuée de <type1> à <type2> et que l’un des types est une classe ou une structure que vous avez définie, vous pouvez peut-être définir un opérateur de conversion de ce type vers l’autre type ou à partir de celui-ci. Pour plus d'informations, consultez How to: Define a Conversion Operator.

  6. En règle générale, il est recommandé de ne pas utiliser de conversions restrictives, sauf si vous pouvez intercepter les défaillances dans un bloc Catch et les traiter de manière efficace.

Voir aussi