Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Limite les conversions de type de données implicites à des conversions étendues uniquement, interdit la liaison tardive et interdit la saisie implicite qui entraîne un Object
type.
Syntaxe
Option Strict { On | Off }
Pièces
Terme | Définition |
---|---|
On |
Optionnel. Active la Option Strict vérification. |
Off |
Optionnel. Désactive la Option Strict vérification. |
Remarques
Quand Option Strict On
ou Option Strict
apparaît dans un fichier, les conditions suivantes provoquent une erreur au moment de la compilation :
Conversions restrictives implicites
Liaison tardive
Saisie implicite qui entraîne un
Object
type
Remarque
Dans les configurations d’avertissement que vous pouvez définir sur la page Compilation, Le Concepteur de projets (Visual Basic) contient trois paramètres qui correspondent aux trois conditions qui provoquent une erreur au moment de la compilation. Pour plus d’informations sur l’utilisation de ces paramètres, consultez Pour définir des configurations d’avertissement dans l’IDE plus loin dans cette rubrique.
L’instruction Option Strict Off
désactive la vérification des erreurs et des avertissements pour les trois conditions, même si les paramètres IDE associés spécifient d’activer ces erreurs ou avertissements. L’instruction Option Strict On
active la vérification des erreurs et des avertissements pour les trois conditions, même si les paramètres IDE associés spécifient pour désactiver ces erreurs ou avertissements.
Si elle est utilisée, l’instruction Option Strict
doit apparaître avant toute autre instruction de code dans un fichier.
Lorsque vous définissez Option Strict
On
sur , Visual Basic vérifie que les types de données sont spécifiés pour tous les éléments de programmation. Les types de données peuvent être spécifiés explicitement ou spécifiés à l’aide de l’inférence de type local. La spécification de types de données pour tous vos éléments de programmation est recommandée, pour les raisons suivantes :
Il permet l'assistance d’IntelliSense pour vos variables et paramètres. Cela vous permet de voir leurs propriétés et d’autres membres au fur et à mesure que vous tapez du code.
Il permet au compilateur d’effectuer la vérification de type. La vérification de type vous permet de trouver des instructions qui peuvent échouer au moment de l’exécution en raison d’erreurs de conversion de type. Il identifie également les appels aux méthodes sur les objets qui ne prennent pas en charge ces méthodes.
Il accélère l’exécution du code. Pour cette raison, si vous ne spécifiez pas de type de données pour un élément de programmation, le compilateur Visual Basic l’affecte au
Object
type. Le code compilé peut être amené à effectuer une conversion arrière et arrière entreObject
d’autres types de données, ce qui réduit les performances.
Erreurs de conversion restrictive implicites
Les erreurs de conversion restrictive implicite se produisent lorsqu’il existe une conversion de type de données implicite qui est une conversion restrictive.
Visual Basic peut convertir de nombreux types de données en d’autres types de données. La perte de données peut se produire lorsque la valeur d’un type de données est convertie en un type de données qui a moins de précision ou une capacité plus petite. Une erreur d’exécution se produit si une telle conversion étroite échoue.
Option Strict
garantit la notification au moment de la compilation de ces conversions restrictives afin de pouvoir les éviter. Pour plus d’informations, consultez Conversions implicites et expliciteset conversions d’élargissement et de réduction.
Les conversions pouvant entraîner des erreurs incluent des conversions implicites qui se produisent dans des expressions. Pour plus d’informations, consultez les rubriques suivantes :
Lorsque vous concatènez des chaînes à l’aide de l’opérateur &, toutes les conversions vers les chaînes sont considérées comme étendues. Ces conversions ne génèrent donc pas d’erreur de conversion restrictive implicite, même si elles sont activées Option Strict
.
Lorsque vous appelez une méthode qui a un argument qui a un type de données différent du paramètre correspondant, une conversion étroite provoque une erreur au moment de la compilation si Option Strict
elle est activée. Vous pouvez éviter l’erreur au moment de la compilation à l’aide d’une conversion étendue ou d’une conversion explicite.
Les erreurs de conversion restrictive implicites sont supprimées au moment de la compilation pour les conversions des éléments d’une For Each…Next
collection vers la variable de contrôle de boucle. Cela se produit même s’il Option Strict
est activé. Pour plus d’informations, consultez la section « Conversions étroites » dans For Each... Instruction suivante.
Erreurs de liaison tardive
Un objet est lié tardivement lorsqu’il est affecté à une propriété ou à une méthode d’une variable déclarée comme de type Object
. Pour plus d’informations, consultez Liaison anticipée et tardive.
Erreurs de type d’objet implicite
Les erreurs de type d’objet implicite se produisent lorsqu’un type approprié ne peut pas être déduit pour une variable déclarée. Par conséquent, un type est Object
déduit. Cela se produit principalement lorsque vous utilisez une Dim
instruction pour déclarer une variable sans utiliser de As
clause et Option Infer
est désactivée. Pour plus d’informations, consultez l’instruction Option Infer et la spécification du langage Visual Basic.
Pour les paramètres de méthode, la As
clause est facultative si Option Strict
elle est désactivée. Toutefois, si un paramètre utilise une As
clause, ils doivent tous l’utiliser. Si Option Strict
c’est le cas, la As
clause est requise pour chaque définition de paramètre.
Si vous déclarez une variable sans utiliser de As
clause et définissez-la Nothing
sur , la variable a un type de Object
. Aucune erreur au moment de la compilation ne se produit dans ce cas quand Option Strict
elle est activée et Option Infer
est activée. Voici un exemple .Dim something = Nothing
Types et valeurs de données par défaut
Le tableau suivant décrit les résultats de différentes combinaisons de spécification du type de données et de l’initialiseur dans une instruction Dim.
Type de données spécifié ? | Initialiseur spécifié ? | Exemple : | Résultat |
---|---|---|---|
Non | Non | Dim qty |
Si Option Strict elle est désactivée (valeur par défaut), la variable est définie sur Nothing .Si Option Strict elle est activée, une erreur au moment de la compilation se produit. |
Non | Oui | Dim qty = 5 |
Si Option Infer elle est activée (valeur par défaut), la variable accepte le type de données de l’initialiseur. Consultez l’inférence de type local.Si Option Infer elle est désactivée et Option Strict désactivée, la variable prend le type de données de Object .Si Option Infer elle est désactivée et Option Strict est activée, une erreur au moment de la compilation se produit. |
Oui | Non | Dim qty As Integer |
La variable est initialisée à la valeur par défaut pour le type de données. Pour plus d’informations, consultez L’instruction Dim. |
Oui | Oui | Dim qty As Integer = 5 |
Si le type de données de l’initialiseur n’est pas convertible en type de données spécifié, une erreur au moment de la compilation se produit. |
Lorsqu’une instruction Option Strict n’est pas présente
Si le code source ne contient pas d’instruction Option Strict
, le paramètre Option strict sur la page de compilation, le Concepteur de projets (Visual Basic) est utilisé. La page Compiler a des paramètres qui fournissent un contrôle supplémentaire sur les conditions qui génèrent une erreur.
Si vous utilisez le compilateur de ligne de commande, vous pouvez utiliser l’option du compilateur -optionstrict pour spécifier un paramètre pour Option Strict
.
Pour définir Option Strict dans l’IDE
Remarque
Votre ordinateur peut afficher différents noms ou emplacements pour certains des éléments de l’interface utilisateur Visual Studio dans les instructions suivantes. L’édition Visual Studio que vous avez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d’informations, consultez Personnaliser l’IDE.
Dans Explorateur de solutions, sélectionnez un projet. Dans le menu Projet, cliquez sur Propriétés.
Sous l’onglet Compiler , définissez la valeur dans la zone Option Strict .
Pour définir des configurations d’avertissement dans l’IDE
Lorsque vous utilisez la page Compile, Project Designer (Visual Basic) au lieu d’une Option Strict
instruction, vous avez un contrôle supplémentaire sur les conditions qui génèrent des erreurs. La section Configurations d’avertissement de la page de compilation contient des paramètres qui correspondent aux trois conditions qui provoquent une erreur au moment de la compilation.Option Strict
Voici les paramètres suivants :
Conversion implicite
Liaison tardive ; l’appel peut échouer au moment de l’exécution
Type implicite ; objet supposé
Lorsque vous définissez Option Strict sur Activé, les trois de ces paramètres de configuration d’avertissement sont définis sur Erreur. Lorsque vous définissez Option Strict sur Désactivé, les trois paramètres sont définis sur Aucun.
Vous pouvez modifier individuellement chaque paramètre de configuration d’avertissement en Aucun, Avertissement ou Erreur. Si les trois paramètres de configuration d’avertissement sont définis sur Erreur, On
apparaît dans la Option strict
zone. Si les trois sont définies sur None, Off
apparaît dans cette zone. Pour toute autre combinaison de ces paramètres, (personnalisé) s’affiche.
Pour définir le paramètre Option Strict par défaut pour les nouveaux projets
Lorsque vous créez un projet, le paramètre Option Strict sous l’onglet Compilation est défini sur le paramètre Option Strict dans la boîte de dialogue Options .
Pour définir Option Strict
dans cette boîte de dialogue, dans le menu Outils , cliquez sur Options. Dans la boîte de dialogue Options , développez Projets et solutions, puis cliquez sur Vb Defaults. Le paramètre par défaut initial dans VB Defaults est Off
.
Pour définir Option Strict sur la ligne de commande
Incluez l’option du compilateur -optionstrict dans la commande vbc .
Exemple 1
Les exemples suivants illustrent les erreurs au moment de la compilation provoquées par des conversions de type implicites qui réduisent les conversions. Cette catégorie d’erreurs correspond à la condition de conversion implicite sur la page de compilation.
' If Option Strict is on, this implicit narrowing
' conversion causes a compile-time error.
' The commented statements below use explicit
' conversions to avoid a compile-time error.
Dim cyclists As Long = 5
Dim bicycles As Integer = cyclists
'Dim bicycles As Integer = CType(cyclists, Integer)
'Dim bicycles As Integer = CInt(cyclists)
'Dim bicycles As Integer = Convert.ToInt32(cyclists)
' If Option Strict is on, this implicit narrowing
' conversion causes a compile-time error.
' The commented statements below use explicit
' conversions to avoid a compile-time error.
Dim charVal As Char = "a"
'Dim charVal As Char = "a"c
'Dim charVal As Char = CType("a", Char)
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the string is implicitly converted
' to a Double, and then is added to the other number.
Dim myAge As Integer = "34" + 6
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the floating-point number
' is implicitly converted to a Long.
Dim num = 123.45 \ 10
Exemple 2
L’exemple suivant illustre une erreur au moment de la compilation provoquée par la liaison tardive. Cette catégorie d’erreurs correspond à la liaison tardive ; l’appel peut échouer à la condition d’exécution sur la page de compilation.
' If Option Strict is on, this late binding
' causes a compile-time error. If Option Strict
' is off, the late binding instead causes a
' run-time error.
Dim punchCard As New Object
punchCard.Column = 5
Exemple 3
Les exemples suivants illustrent des erreurs provoquées par des variables déclarées avec un type implicite de Object
. Cette catégorie d’erreurs correspond au type implicite ; condition supposée de l’objet sur la page de compilation.
' If Option Strict is on and Option Infer is off,
' this Dim statement without an As clause
' causes a compile-time error.
Dim cardReaders = 5
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the variable is set to Nothing.
Dim dryWall
' If Option Strict is on, this parameter without an
' As clause causes a compile-time error.
Private Sub DetectIntergalacticRange(ByVal photonAttenuation)
End Sub
Voir aussi
- Conversions étendues et restrictives
- Conversions implicites et explicites
- page compiler , Concepteur de projets (Visual Basic)
- Instruction Option Explicit
- Fonctions de conversion de type
- Guide pratique pour accéder aux membres d’un objet
- Expressions incorporées en XML
- Conversion de délégué assouplie
- Liaison tardive dans les solutions Office
- -optionstrict
- Paramètres par défaut de Visual Basic, Projets, Boîte de dialogue Options