Option Strict StatementOption Strict Statement

Restreint les conversions de types de données implicites aux conversions étendues, interdit la liaison tardive et interdit le typage implicite qui produit un type de Object.Restricts implicit data type conversions to only widening conversions, disallows late binding, and disallows implicit typing that results in an Object type.

SyntaxeSyntax

Option Strict { On | Off }  

ComposantsParts

TermeTerm DéfinitionDefinition
On Ce paramètre est facultatif.Optional. Active la vérification de Option Strict.Enables Option Strict checking.
Off Ce paramètre est facultatif.Optional. Désactive la vérification de la Option Strict.Disables Option Strict checking.

NotesRemarks

Lorsque Option Strict On ou Option Strict apparaît dans un fichier, les conditions suivantes provoquent une erreur au moment de la compilation :When Option Strict On or Option Strict appears in a file, the following conditions cause a compile-time error:

  • Conversions restrictives implicitesImplicit narrowing conversions

  • Liaison tardiveLate binding

  • Saisie implicite qui génère un type ObjectImplicit typing that results in an Object type

Notes

Dans les configurations d’avertissement que vous pouvez définir sur la page compiler, le concepteur de projets (Visual Basic), il existe trois paramètres qui correspondent aux trois conditions qui provoquent une erreur au moment de la compilation.In the warning configurations that you can set on the Compile Page, Project Designer (Visual Basic), there are three settings that correspond to the three conditions that cause a compile-time error. 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.For information about how to use these settings, see To set warning configurations in the IDE later in this topic.

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.The Option Strict Off statement turns off error and warning checking for all three conditions, even if the associated IDE settings specify to turn on these errors or warnings. 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 de désactiver ces erreurs ou avertissements.The Option Strict On statement turns on error and warning checking for all three conditions, even if the associated IDE settings specify to turn off these errors or warnings.

Si elle est utilisée, l’instruction Option Strict doit apparaître avant toute autre instruction de code dans un fichier.If used, the Option Strict statement must appear before any other code statements in a file.

Lorsque vous affectez à Option Strict la valeur On, Visual Basic vérifie que les types de données sont spécifiés pour tous les éléments de programmation.When you set Option Strict to On, Visual Basic checks that data types are specified for all programming elements. Les types de données peuvent être spécifiés explicitement ou spécifiés à l’aide de l’inférence de type local.Data types can be specified explicitly, or specified by using local type inference. Il est recommandé de spécifier des types de données pour tous vos éléments de programmation, pour les raisons suivantes :Specifying data types for all your programming elements is recommended, for the following reasons:

  • Il permet la prise en charge d’IntelliSense pour vos variables et paramètres.It enables IntelliSense support for your variables and parameters. Cela vous permet de voir leurs propriétés et d’autres membres au fur et à mesure que vous tapez du code.This enables you to see their properties and other members as you type code.

  • Elle permet au compilateur d’effectuer une vérification de type.It enables the compiler to perform type checking. La vérification de type vous aide à trouver les instructions qui peuvent échouer au moment de l’exécution en raison d’erreurs de conversion de type.Type checking helps you find statements that can fail at run time because of type conversion errors. Il identifie également les appels aux méthodes sur les objets qui ne prennent pas en charge ces méthodes.It also identifies calls to methods on objects that do not support those methods.

  • Elle accélère l’exécution du code.It speeds up the execution of code. Cela est dû au fait que si vous ne spécifiez pas de type de données pour un élément de programmation, le compilateur Visual Basic lui assigne le type de Object.One reason for this is that if you do not specify a data type for a programming element, the Visual Basic compiler assigns it the Object type. Le code compilé peut être obligé de passer de la Object à d’autres types de données, ce qui réduit les performances.Compiled code might have to convert back and forth between Object and other data types, which reduces performance.

Erreurs de conversion restrictive impliciteImplicit Narrowing Conversion Errors

Les erreurs de conversion restrictive implicite se produisent quand une conversion de types de données implicite est une conversion restrictive.Implicit narrowing conversion errors occur when there is an implicit data type conversion that is a narrowing conversion.

Visual Basic pouvez convertir de nombreux types de données en d’autres types de données.Visual Basic can convert many data types to other data types. Une perte de données peut se produire lorsque la valeur d’un type de données est convertie en un type de données ayant une précision moindre ou une capacité inférieure.Data loss can occur when the value of one data type is converted to a data type that has less precision or a smaller capacity. Une erreur d’exécution se produit si une telle conversion restrictive échoue.A run-time error occurs if such a narrowing conversion fails. Option Strict garantit la notification au moment de la compilation de ces conversions restrictives afin que vous puissiez les éviter.Option Strict ensures compile-time notification of these narrowing conversions so that you can avoid them. Pour plus d’informations, consultez conversions implicites et explicites et conversions étendues et restrictives.For more information, see Implicit and Explicit Conversions and Widening and Narrowing Conversions.

Les conversions qui peuvent provoquer des erreurs incluent les conversions implicites qui se produisent dans les expressions.Conversions that can cause errors include implicit conversions that occur in expressions. Pour plus d’informations, consultez les rubriques suivantes :For more information, see the following topics:

Lorsque vous concaténez des chaînes à l’aide de l' opérateur &, toutes les conversions en chaînes sont considérées comme étendues.When you concatenate strings by using the & Operator, all conversions to the strings are considered to be widening. Par conséquent, ces conversions ne génèrent pas d’erreur de conversion restrictive implicite, même si Option Strict est activé.So these conversions do not generate an implicit narrowing conversion error, even if Option Strict is on.

Quand vous appelez une méthode avec un argument dont le type de données est différent de celui du paramètre correspondant, une conversion restrictive provoque une erreur de compilation si Option Strict est défini sur on.When you call a method that has an argument that has a data type different from the corresponding parameter, a narrowing conversion causes a compile-time error if Option Strict is on. Vous pouvez éviter l’erreur au moment de la compilation à l’aide d’une conversion étendue ou d’une conversion explicite.You can avoid the compile-time error by using a widening conversion or an explicit conversion.

Les erreurs de conversion restrictive implicite sont supprimées au moment de la compilation pour les conversions des éléments d’une collection For Each…Next en variable de contrôle de boucle.Implicit narrowing conversion errors are suppressed at compile-time for conversions from the elements in a For Each…Next collection to the loop control variable. Cela se produit même si Option Strict est activé.This occurs even if Option Strict is on. Pour plus d’informations, consultez la section « conversions restrictives » dans for each... Instruction suivante.For more information, see the "Narrowing Conversions" section in For Each...Next Statement.

Erreurs de liaison tardiveLate Binding Errors

Un objet est à liaison tardive quand il est assigné à une propriété ou à une méthode d’une variable déclarée comme étant de type Object.An object is late bound when it is assigned to a property or method of a variable that is declared to be of type Object. Pour plus d’informations, consultez liaison précoce et tardive.For more information, see Early and Late Binding.

Erreurs de type d’objet impliciteImplicit Object Type Errors

Les erreurs de type d’objet implicite se produisent quand un type approprié ne peut pas être déduit pour une variable déclarée, de sorte qu’un type Object est déduit.Implicit object type errors occur when an appropriate type cannot be inferred for a declared variable, so a type of Object is inferred. Cela se produit principalement quand vous utilisez une instruction Dim pour déclarer une variable sans utiliser une clause As et que Option Infer a la valeur Off.This primarily occurs when you use a Dim statement to declare a variable without using an As clause, and Option Infer is off. Pour plus d’informations, consultez instruction Option Infer et spécification du langage Visual Basic.For more information, see Option Infer Statement and the Visual Basic Language Specification.

Pour les paramètres de méthode, la clause As est facultative si Option Strict est désactivé.For method parameters, the As clause is optional if Option Strict is off. Toutefois, si un paramètre utilise une clause As, ils doivent tous l’utiliser.However, if any one parameter uses an As clause, they all must use it. Si Option Strict est activé, la clause As est requise pour chaque définition de paramètre.If Option Strict is on, the As clause is required for every parameter definition.

Si vous déclarez une variable sans utiliser de clause As et que vous la définissez sur Nothing, la variable a un type de Object.If you declare a variable without using an As clause and set it to Nothing, the variable has a type of Object. Aucune erreur de compilation ne se produit dans ce cas lorsque Option Strict est activé et que Option Infer est activé.No compile-time error occurs in this case when Option Strict is on and Option Infer is on. Dim something = Nothingen est un exemple.An example of this is Dim something = Nothing.

Types de données et valeurs par défautDefault Data Types and Values

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.The following table describes the results of various combinations of specifying the data type and initializer in a Dim Statement.

Type de données spécifié ?Data type specified? Initialiseur spécifié ?Initializer specified? ExempleExample RésultatResult
NonNo NonNo Dim qty Si Option Strict est désactivé (par défaut), la valeur affectée à la variable est Nothing.If Option Strict is off (the default), the variable is set to Nothing.

Si Option Strict est activé, une erreur se produit au moment de la compilation.If Option Strict is on, a compile-time error occurs.
NonNo OuiYes Dim qty = 5 Si Option Infer est activée (par défaut), la variable prend le type de données de l'initialiseur.If Option Infer is on (the default), the variable takes the data type of the initializer. Consultez inférence de type local.See Local Type Inference.

Si Option Infer est désactivé et que Option Strict est désactivé, la variable prend le type de données de Object.If Option Infer is off and Option Strict is off, the variable takes the data type of Object.

Si Option Infer est désactivé et que Option Strict est activé, une erreur se produit au moment de la compilation.If Option Infer is off and Option Strict is on, a compile-time error occurs.
OuiYes NonNo Dim qty As Integer La variable est initialisée avec la valeur par défaut du type de données.The variable is initialized to the default value for the data type. Pour plus d’informations, consultez Dim, instruction.For more information, see Dim Statement.
OuiYes OuiYes Dim qty As Integer = 5 Si le type de données de l’initialiseur ne peut pas être converti dans le type de données spécifié, une erreur se produit au moment de la compilation.If the data type of the initializer is not convertible to the specified data type, a compile-time error occurs.

Quand une instruction option strict n’est pas présenteWhen an Option Strict Statement Is Not Present

Si le code source ne contient pas d’instruction Option Strict, le paramètre option strict sur la page compiler, concepteur de projets (Visual Basic), est utilisé.If the source code does not contain an Option Strict statement, the Option strict setting on the Compile Page, Project Designer (Visual Basic) is used. La page de compilation contient des paramètres qui offrent un contrôle supplémentaire sur les conditions qui génèrent une erreur.The Compile Page has settings that provide additional control over the conditions that generate an error.

Si vous utilisez le compilateur de ligne de commande, vous pouvez utiliser l’option -optionstrict du compilateur pour spécifier un paramètre pour Option Strict.If you are using the command-line compiler, you can use the -optionstrict compiler option to specify a setting for Option Strict.

Pour définir option strict dans l’IDETo set Option Strict in the IDE

Notes

Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués dans les instructions suivantes.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. L’édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments.The Visual Studio edition that you have and the settings that you use determine these elements. Pour plus d’informations, consultez Personnalisation de l’IDE.For more information, see Personalizing the IDE.

  1. Dans l’Explorateur de solutions, sélectionnez un projet.In Solution Explorer, select a project. Dans le menu Projet, cliquez sur Propriétés.On the Project menu, click Properties.

  2. Sous l’onglet compiler , définissez la valeur dans la zone option strict .On the Compile tab, set the value in the Option Strict box.

Pour définir des configurations d’avertissement dans l’IDETo set warning configurations in the IDE

Lorsque vous utilisez la page compiler du concepteur de projets (Visual Basic) au lieu d’une instruction Option Strict, vous avez un contrôle supplémentaire sur les conditions qui génèrent des erreurs.When you use the Compile Page, Project Designer (Visual Basic) instead of an Option Strict statement, you have additional control over the conditions that generate errors. La section configurations d’avertissement de la page compiler contient des paramètres qui correspondent aux trois conditions qui provoquent une erreur au moment de la compilation lorsque Option Strict est activé.The Warning configurations section of the Compile Page has settings that correspond to the three conditions that cause a compile-time error when Option Strict is on. Voici ces paramètres :Following are these settings:

  • Conversion impliciteImplicit conversion

  • Liaison tardive ; l’appel peut échouer au moment de l’exécutionLate binding; call could fail at run time

  • Type implicite ; objet pris par défautImplicit type; object assumed

Quand vous affectez la valeur On à Option Strict, chacun de ces trois paramètres de configuration d’avertissement prend la valeur Erreur.When you set Option Strict to On, all three of these warning configuration settings are set to Error. Quand vous affectez la valeur Off à Option Strict, chacun des trois paramètres prend la valeur Aucun.When you set Option Strict to Off, all three settings are set to None.

Vous pouvez remplacer individuellement chaque paramètre de configuration d’avertissement par Aucun, Avertissement ou Erreur.You can individually change each warning configuration setting to None, Warning, or Error. Si les trois paramètres de configuration d’avertissement ont la valeur Erreur, On s’affiche dans la zone Option strict.If all three warning configuration settings are set to Error, On appears in the Option strict box. Si les trois ont la valeur Aucun, Off apparaît dans cette zone.If all three are set to None, Off appears in this box. Pour toute autre combinaison de ces paramètres, (personnalisé) s’affiche.For any other combination of these settings, (custom) appears.

Pour définir le paramètre option strict par défaut pour les nouveaux projetsTo set the Option Strict default setting for new projects

Lorsque vous créez un projet, le paramètre option strict de l’onglet compiler est défini sur le paramètre option strict de la boîte de dialogue options .When you create a project, the Option Strict setting on the Compile tab is set to the Option Strict setting in the Options dialog box.

Pour définir Option Strict dans cette boîte de dialogue, dans le menu Outils , cliquez sur options.To set Option Strict in this dialog box, on the Tools menu, click Options. Dans la boîte de dialogue Options, développez Projets et solutions, puis cliquez sur Valeurs par défaut VB.In the Options dialog box, expand Projects and Solutions, and then click VB Defaults. Le paramètre par défaut initial dans les valeurs par défaut VB est Off.The initial default setting in VB Defaults is Off.

Pour définir option strict sur la ligne de commandeTo set Option Strict on the command line

Incluez l’option -optionstrict du compilateur dans la commande vbc .Include the -optionstrict compiler option in the vbc command.

ExempleExample

Les exemples suivants illustrent des erreurs de compilation provoquées par des conversions de types implicites qui sont des conversions restrictives.The following examples demonstrate compile-time errors caused by implicit type conversions that are narrowing conversions. Cette catégorie d’erreurs correspond à la condition de conversion implicite sur la page compiler.This category of errors corresponds to the Implicit conversion condition on the Compile Page.

' 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

ExempleExample

L’exemple suivant illustre une erreur de compilation provoquée par la liaison tardive.The following example demonstrates a compile-time error caused by late binding. Cette catégorie d’erreurs correspond à la liaison tardive ; l’appel peut échouer au moment de l’exécution sur la page compiler.This category of errors corresponds to the Late binding; call could fail at run time condition on the Compile Page.

' 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

ExempleExample

Les exemples suivants illustrent des erreurs provoquées par des variables déclarées avec un type implicite de Object.The following examples demonstrate errors caused by variables that are declared with an implicit type of Object. Cette catégorie d’erreurs correspond au type implicite ; condition supposée par l’objet sur la page de compilation.This category of errors corresponds to the Implicit type; object assumed condition on the Compile Page.

' 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 aussiSee also