無法推斷 '<variablename>' 的型別,因為迴圈繫結和 step 子句不會擴展為相同型別

更新:2007 年 11 月

您已撰寫 For...Next 迴圈,但因為下列條件為 true,編譯器無法推斷此迴圈控制變數的資料型別:

  • 沒有使用 As 子句指定迴圈控制變數的資料型別。

  • 迴圈繫結和 step 變數至少包含兩個資料型別。

  • 資料型別之間沒有標準轉換。

因此,編譯器無法推斷迴圈控制變數的資料型別。

在下列範例中,step 變數是字元,而迴圈繫結則都是整數。由於字元和整數之間沒有標準轉換,將會報告此錯誤。

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

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

錯誤 ID:BC30982

若要更正這個錯誤

  • 依需要變更迴圈繫結和 step 變數的型別,讓其中一項的型別是其他迴圈繫結和 step 變數要擴展的目標型別。在先前的範例中,將 stepVar 型別變更為 Integer。

    Dim stepVar = 1
    

    -或-

    Dim stepVar As Integer = 1
    
  • 使用明確轉換函式,將迴圈繫結和 step 變數轉換為適當的型別。在先前的範例中,將 Val 函式套用到 stepVar。

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

請參閱

概念

隱含和明確轉換

區域型別推斷

擴展和縮小轉換

參考

For...Next 陳述式 (Visual Basic)

Option Infer 陳述式

型別轉換函式

Val 函式