Instruction Option Infer
Active l'utilisation d'inférence de type local dans la déclaration de variables.
Option Infer { On | Off }
Éléments
Terme |
Définition |
On |
Facultatif. Active l'inférence de type local. |
Off |
Facultatif. Désactive l'inférence de type local. |
Notes
Pour définir Option Infer dans un fichier, tapez Option Infer On ou Option Infer Off en haut du fichier, avant tout autre code source. Si la valeur définie pour Option Infer dans un fichier est en conflit avec la valeur définie dans l'IDE ou sur la ligne de commande, la valeur dans le fichier est prioritaire.
Lorsque vous affectez à Option Infer la valeur On, vous pouvez déclarer des variables locales sans déclarer explicitement un type de données. Le compilateur déduit le type de données d'une variable à partir du type de son expression d'initialisation.
Dans l'illustration suivante, Option Infer est activé. La variable dans la déclaration Dim someVar = 2 est déclarée comme un entier par inférence de type.
IntelliSense lorsque Option Infer est activé
Dans l'illustration suivante, Option Infer est désactivé. La variable dans la déclaration Dim someVar = 2 est déclarée comme un Object par inférence de type. Dans cet exemple, le paramètre Option Strict a la valeur Off sur le Page Compiler, Concepteur de projets (Visual Basic).
IntelliSense lorsque Option Infer est désactivé
Lorsqu'une variable est déclarée comme un Object, le type d'exécution peut changer pendant l'exécution du programme. Visual Basic effectue les opérations appelées boxing et unboxing pour la conversion entre un Object et un type valeur. Ces opérations ralentissent l'exécution. Pour plus d'informations sur le boxing et l'unboxing, consultez Spécification du langage Visual Basic.
L'inférence de type s'applique au niveau de la procédure et ne s'applique pas à l'extérieur d'une procédure dans une classe, une structure, un module ou une interface.
Pour plus d'informations, consultez Inférence de type local (Visual Basic).
Lorsqu'aucune instruction Option Infer n'est présente
Si le code source ne contient pas d'instruction Option Infer, le paramètre Option Infer sur Page Compiler, Concepteur de projets (Visual Basic) est utilisé. Si le compilateur de ligne de commande est utilisé, l'option de compilateur /optioninfer est utilisée.
Pour définir Option Infer dans l'IDE
Dans l'Explorateur de solutions, sélectionnez un projet. Dans le menu Projet, cliquez sur Propriétés. Pour plus d'informations, consultez Introduction au Concepteur de projets.
Cliquez sur l'onglet Compiler.
Définissez la valeur dans la zone Option Infer.
Lorsque vous créez un projet, le paramètre Option Infer dans l'onglet Compiler correspond au paramètre Option Infer dans la boîte de dialogue Valeurs par défaut VB. Pour accéder à la boîte de dialogue Valeurs par défaut VB, cliquez sur Options dans le menu Outils. Dans la boîte de dialogue Options, développez Projets et solutions, puis cliquez sur Valeurs par défaut VB. Le paramètre par défaut initial dans Valeurs par défaut VB est On.
Pour définir Option Infer sur la ligne de commande
- Incluez l'option du compilateur /optioninfer dans la commande vbc.
Valeurs et types de données par défaut
Le tableau suivant décrit les résultats des diverses 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 est désactivé (valeur par défaut), la variable a la valeur Nothing. Si Option Strict est activée, une erreur de compilation se produit. |
Non |
Oui |
Dim qty = 5 |
Si Option Infer est activé (valeur par défaut), la variable prend le type de données de l'initialiseur. Consultez Inférence de type local (Visual Basic). Si Option Infer et Option Strict sont désactivés, la variable prend le type de données de Object. Si Option Infer est désactivé et Option Strict est activé, une erreur de compilation se produit. |
Oui |
Non |
Dim qty As Integer |
La variable est initialisée avec la valeur par défaut du type de données. Pour plus d'informations, consultez Dim, instruction (Visual Basic). |
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 de compilation se produit. |
Exemple
Les exemples suivants expliquent comment l'instruction Option Infer active l'inférence de type local.
' Enable Option Infer before trying these examples.
' Variable num is an Integer.
Dim num = 5
' Variable dbl is a Double.
Dim dbl = 4.113
' Variable str is a String.
Dim str = "abc"
' Variable pList is an array of Process objects.
Dim pList = Process.GetProcesses()
' Variable i is an Integer.
For i = 1 To 10
Console.WriteLine(i)
Next
' Variable item is a string.
Dim lst As New List(Of String) From {"abc", "def", "ghi"}
For Each item In lst
Console.WriteLine(item)
Next
' Variable namedCust is an instance of the Customer class.
Dim namedCust = New Customer With {.Name = "Blue Yonder Airlines",
.City = "Snoqualmie"}
' Variable product is an instance of an anonymous type.
Dim product = New With {Key .Name = "paperclips", .Price = 1.29}
' If customers is a collection of Customer objects in the following
' query, the inferred type of cust is Customer, and the inferred type
' of custs is IEnumerable(Of Customer).
Dim custs = From cust In customers
Where cust.City = "Seattle"
Select cust.Name, cust.ID
L'exemple suivant montre que le type d'exécution peut différer lorsqu'une variable est identifiée comme un Object.
' Disable Option Infer when trying this example.
Dim someVar = 5
Console.WriteLine(someVar.GetType.ToString)
' If Option Infer is instead enabled, the following
' statement causes a run-time error. This is because
' someVar was implicitly defined as an integer.
someVar = "abc"
Console.WriteLine(someVar.GetType.ToString)
' Output:
' System.Int32
' System.String
Voir aussi
Référence
Dim, instruction (Visual Basic)
Option Explicit, instruction (Visual Basic)
Valeurs par défaut VB, Projets, boîte de dialogue Options
Concepts
Inférence de type local (Visual Basic)
Historique des modifications
Date |
Historique |
Motif |
Avril 2011 |
Ajout d'informations à propos du type Object et de l'inférence de type. |
Améliorations apportées aux informations. |
Mars 2011 |
Modification des remarques et ajout d'un exemple. |
Améliorations apportées aux informations. |