Le type de « <nom_variable> » est ambigu, car les limites de la boucle et la clause d’incrémentation ne sont pas converties en un même type
Votre code contient une boucle For...Next
dans laquelle le compilateur ne peut pas déduire un type de données pour la variable de contrôle de boucle, car les conditions suivantes sont remplies :
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 l’incrémentation contiennent au moins deux types de données.
Il existe plusieurs conversions possibles entre les types de données.
Il n’existe aucun meilleur type parmi les candidats, si bien que le choix du type pour la variable de contrôle de boucle est ambigu.
Par exemple, la boucle suivante a une limite de boucle de type Integer
et une autre de type UInteger
:
Dim m As Integer = 1
Dim n As UInteger = 10
' Not valid.
' For i = m To n
' Loop processing.
' Next
Il existe une conversion possible entre Integer
et UInteger
, et une conversion possible entre UInteger
et Integer
, mais les deux sont des conversions restrictives, donc aucune ne constitue le meilleur choix.
Dans l’exemple suivant, une troisième variable de type Double
est ajoutée. Integer
et UInteger
ont des conversions étendues standard en Double
, ce qui fait de la conversion en Double
le meilleur choix. L’inférence de type assigne à la variable de contrôle de boucle i
le type de données Double
.
Dim stepVar As Double = 1
' Valid.
For i = m To n Step stepVar
' Loop processing.
Next
ID d’erreur : BC30983
Convertissez explicitement l’une des variables en un type vers lequel les autres ont une conversion étendue, par exemple :
VBFor i = m To CLng(n)
Utilisez une clause
As
pour spécifier le type de la variable de contrôle :VBFor i As Double = m To n
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :