Der Typ von '<variablename>' ist mehrdeutig, da die Schleifengrenzen und die Schrittvariable nicht auf denselben Typ erweitert werden

Der Code enthält eine For...Next -Schleife, in der der Compiler aufgrund der folgenden Bedingungen keinen Datentyp für die Schleifensteuerungsvariable ableiten kann:

  • Der Datentyp der Schleifensteuerungsvariablen wird nicht mit einer As -Klausel angegeben.

  • Die Schleifenbegrenzungen und die step-Variable enthalten mindestens zwei Datentypen.

  • Zwischen den Datentypen sind mehrere Konvertierungen möglich.

  • Es gibt keinen optimalen Typ unter den Kandidaten, sodass die Auswahl des Typs für die Schleifensteuerungsvariable mehrdeutig ist.

Die folgende Schleife weist beispielsweise eine Schleifenbegrenzung vom Typ Integer und eine Schleifenbegrenzung vom Typ UIntegerauf:

Dim m As Integer = 1  
Dim n As UInteger = 10  
' Not valid.  
' For i = m To n  
    ' Loop processing.  
' Next  

Es wird eine mögliche Konvertierung zwischen Integer und UIntegersowie eine mögliche Konvertierung zwischen UInteger und Integerunterstützt, bei beiden handelt es sich jedoch um einschränkende Konvertierungen, sodass keine der beiden eine optimale Wahl darstellt.

Im nächsten Beispiel wird eine dritte Variable des Typs Double hinzugefügt. Sowohl Integer als auch UInteger verfügen über standardmäßige Erweiterungskonvertierungen für Double, wodurch die Konvertierung in Double die beste Wahl darstellt. Durch den Typrückschluss wird dem Datentyp i die Schleifensteuerungsvariable Doublezugewiesen.

Dim stepVar As Double = 1  
' Valid.  
For i = m To n Step stepVar  
    ' Loop processing.  
Next  

Fehler-ID: BC30983

So beheben Sie diesen Fehler

  • Konvertieren Sie eine der Variablen explizit in einen Typ, für den die anderen über eine Erweiterungskonvertierung verfügen. Beispiel:

    For i = m To CLng(n)  
    
  • Verwenden Sie eine As -Klausel, um den Typ der Steuerelementvariablen anzugeben:

    For i As Double = m To n
    

Siehe auch