Déclaration implicite et explicite (Visual Basic)
Par défaut, le compilateur Visual Basic impose la déclaration explicite, qui exige que vous déclariez chaque variable avant de l'utiliser. Vous pouvez lever cette exigence et permettre la déclaration implicite.
Visual Basic met à votre disposition un commutateur de déclaration explicite. Par défaut, ce commutateur a la valeur On et le compilateur met en vigueur la déclaration explicite. Si vous définissez ce commutateur à Off, vous pouvez utiliser des variables sans les déclarer.
Commutateur de déclaration explicite. Pour définir à On ou Off le commutateur de déclaration explicite, vous disposez des méthodes suivantes :
Définissez la propriété de projet adéquate dans l'environnement de développement intégré (IDE). Cliquez sur Propriétés de <Nom_Projet> dans le menu Projet, puis cliquez sur l'onglet Compiler. Vous pouvez définir les valeurs par défaut pour Option Explicit, Option Strict et Option Compare.
Spécifiez l'option du compilateur de ligne de commande /optionexplicit.
Ajoutez l'instruction Option Explicit (voir Option Explicit, instruction (Visual Basic)) au début du code.
Si vous utilisez l'instruction Option Explicit, elle substitue la propriété de projet et les paramètres d'option du compilateur, mais seulement pour le fichier de code source dans lequel elle apparaît.
Avantage de performance. La définition de Option Explicit à On présente l'avantage de forcer la réalisation de l'inférence de type en phase de compilation plutôt qu'en phase d'exécution. Les performances sont alors améliorées.
Déclaration implicite
Si vous définissez Option Explicit à Off, vous pouvez déclarer implicitement une variable simplement en l'utilisant dans votre code. Le compilateur assigne le Object, type de données à toutes les variables déclarées implicitement. Toutefois, votre application est plus efficace si vous déclarez explicitement toutes vos variables avec un type de données précis. Vous réduisez ainsi les risques d'erreurs de conflit de nom et de fautes de frappe. Vous permettez également au compilateur de détecter des erreurs d'exécution potentielles, telles que l'assignation d'un type Integer à un type Short.
Erreurs potentielles
Nouvelles variables involontaires
Vous pouvez écrire une procédure dans laquelle vous ne déclarez pas de variable locale. L'exemple suivant illustre ce comportement :
Function safeSqrt(num)
' Make sure num is positive for square root.
tempVal = Math.Abs(num)
Return Math.Sqrt(tempVal)
End Function
Visual Basic crée automatiquement tempVal en tant que variable locale que vous pouvez utiliser comme si vous l'aviez explicitement déclarée. Bien que pratique, cette méthode peut entraîner de petites erreurs dans votre code si vous avez mal orthographié un nom de variable. Supposons que vous avez écrit la procédure de l'exemple précédent de la manière suivante :
Function safeSqrt(num)
' Make sure num is positive for square root.
tempVal = Math.Abs(num)
Return Math.Sqrt(temVal)
End Function
À première vue, votre code est le même. Toutefois, comme la variable tempVal est mal orthographiée en tant qu'argument de Sqrt, le compilateur crée une variable locale supplémentaire appelée temVal à laquelle n'est jamais assignée de valeur et votre fonction retourne toujours zéro.
Référence d'élément existant involontaire
Lorsque Visual Basic rencontre un nouveau nom, il ne peut pas déterminer si vous avez souhaité déclarer une nouvelle variable implicitement ou si vous avez mal orthographié un nom de variable existant. Par conséquent, il essaie de créer une nouvelle variable avec ce nom. Il se peut qu'il y ait une variable ou un autre élément de programmation déjà défini avec ce nom ; dans ce cas, votre code utiliserait cette définition involontairement.
Vous pouvez éviter les problèmes de variables mal orthographiées en utilisant la déclaration explicite.
Déclaration explicite
Si la déclaration explicite avait été active pour le fichier source contenant la procédure safeSqrt de l'exemple précédent, Visual Basic aurait reconnu tempVal et temVal comme des variables non déclarées et aurait généré un message d'erreur pour l'une et l'autre. En conséquence de quoi, vous auriez explicitement déclaré tempVal. L'exemple suivant illustre ce comportement :
Function safeSqrt(ByVal num As Double) As Double
' Make sure num is positive for square root.
Dim tempVal As Double = Math.Abs(num)
Return Math.Sqrt(temVal)
End Function
Avec ce nouveau code, vous comprendriez immédiatement le problème, car Visual Basic afficherait un message d'erreur pour la variable temVal mal orthographiée. Comme la déclaration explicite vous aide à intercepter les erreurs de ce type, il est recommandé de l'utiliser dans tout votre code.
Notes
L'instruction Option Explicit opère fichier par fichier. Elle doit figurer au début de chaque fichier de code source dans lequel vous voulez pouvoir contrôler la déclaration explicite de variable.
Voir aussi
Tâches
Comment : modifier des propriétés de projet et des paramètres de configuration
Référence
Liste des types de données (Visual Basic)
Fonctions de conversion de types de données (Visual Basic)
Concepts
Programmation sans type dans Visual Basic
Vérification du type dans Visual Basic
Object comme type de données universel (Visual Basic)