Partager via


Le type de '<NomVariable>' ne peut pas être déduit, car les limites de la boucle et la clause d'incrémentation ne sont pas converties en un même type

Mise à jour : novembre 2007

Type of '<variablename>' cannot be inferred because the loop bounds and the step variable do not widen to the same type

Vous avez écrit une boucle For...Next dans laquelle le compilateur ne peut pas déduire de type de données pour la variable de contrôle de boucle, car les conditions suivantes sont vraies :

  • Le type de données de la variable de contrôle de boucle n'est pas spécifié avec une clause As.

  • Les limites de la boucle et la clause d'incrémentation contiennent au moins deux types de données.

  • Aucune conversion standard n'existe entre les types de données.

Par conséquent, le compilateur ne peut pas déduire le type de données de la variable de contrôle d'une boucle.

Dans l'exemple suivant, la clause d'incrémentation est un caractère et les limites de la boucle sont toutes les deux des entiers. Étant donné qu'il n'existe aucune conversion standard entre les caractères et les entiers, cette erreur est signalée.

Dim stepVar = "1"c
Dim m = 0
Dim n = 20

' Not valid.
' For i = 1 To 10 Step stepVar
    ' Loop processing
' Next

ID d'erreur : BC30982

Pour corriger cette erreur

  • Modifiez les types des limites de la boucle et de la clause d'incrémentation selon vos besoins afin qu'au moins un des types soit un type de conversion. Dans l'exemple précédent, modifiez le type de stepVar en Integer.

    Dim stepVar = 1
    

    - ou -

    Dim stepVar As Integer = 1
    
  • Utilisez les fonctions de conversion explicite pour convertir les limites de la boucle et la clause d'incrémentation en types appropriés. Dans l'exemple précédent, appliquez la fonction Val à stepVar.

    For i = 1 To 10 Step Val(stepVar)
        ' Loop processing
    Next
    

Voir aussi

Concepts

Conversions implicites et explicites

Inférence de type local

Conversions étendues et restrictives

Référence

For...Next, instruction (Visual Basic)

Option Infer, instruction

Fonctions de conversion de types de données

Val, fonction