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

Mise à jour : novembre 2007

Option Strict On disallows implicit conversions from '<type1>' to '<type2>'

Vous avez tenté de convertir un type en un autre type qui ne peut pas contenir la valeur, tel que la conversion d'un type Long en un type Integer, lorsque le commutateur de vérification de type (Option Strict, instruction) a la valeur On.

Ce type de conversion, appelé conversion restrictive, peut é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>. S'ils sont tous deux des types élémentaires Visual Basic ou des instances de classes, vous pouvez généralement vous prononcer en consultant le tableau dans Conversions étendues et restrictives.

  2. S'il n'existe qu'une conversion restrictive de <type1> à <type2>, vous devez utiliser un cast explicite. Les mots clés CType, fonction et DirectCast lèvent une exception runtime si la conversion échoue. Le mot clé TryCast s'applique uniquement aux types référence et retourne Nothing (Visual Basic) si la conversion échoue.

  3. Si une conversion restrictive existe et que votre programme peut tolérer une défaillance au moment de l'exécution, ou si vous êtes certain qu'aucune défaillance au moment de l'exécution ne se produira, 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 (Visual Basic) pour éviter des résultats inattendus ou la fin anticipée de votre programme.

  4. Si aucune conversion n'existe de <type1> à <type2>, vous devez réévaluer votre logique de programme. Vous pouvez être en mesure d'écrire du code qui assigne des valeurs à <type2> correspondant aux valeurs anticipées de <type1>.

  5. Si aucune conversion n'existe de <type1> à <type2> et que l'un des types est une classe ou une structure que vous avez définie, vous pouvez être en mesure de définir un opérateur de conversion de ce type à l'autre type ou de l'autre type. Pour plus d'informations, consultez Comment : 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 bloc Catch et les traiter efficacement.

Voir aussi

Tâches

Comment : définir un opérateur de conversion

Concepts

Conversions étendues et restrictives

Référence

Option Strict, instruction

CType, fonction

DirectCast

TryCast

Nothing (Visual Basic)

Try...Catch...Finally, instruction (Visual Basic)