Partager via


Déclaration implicite et explicite

Mise à jour : novembre 2007

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 OptionExplicit, 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 OptionExplicit à 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 OptionExplicit à 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.

Remarque :

L'instruction OptionExplicit 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

Concepts

Programmation sans type dans Visual Basic

Vérification du type dans Visual Basic

Object comme type de données universel

Utilisation efficace des types de données

Variables en Visual Basic

Conventions d'affectation de noms Visual Basic

Référence

Liste des types de données (Visual Basic)

Fonctions de conversion de types de données