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é

Vue IntelliSense de la déclaration.

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é

Vue IntelliSense de la déclaration.

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

  1. 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.

  2. Cliquez sur l'onglet Compiler.

  3. 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 Compare, instruction

Option Explicit, instruction (Visual Basic)

Option Strict, instruction

Valeurs par défaut VB, Projets, boîte de dialogue Options

/optioninfer

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.