共用方式為


疑難排解陣列 (Visual Basic)

此頁面列出使用陣列時可能發生的一些常見問題。

編譯錯誤宣告與初始化陣列

編譯錯誤可能會因為對宣告、建立及初始化陣列的規則有誤解而引發。 錯誤的最常見原因如下:

  • 於在陣列變數宣告中指定維度長度之後,提供 New 運算子 (部分機器翻譯) 子句。 下列程式程式碼顯示此類型的無效宣告。

    Dim INVALIDsingleDimByteArray(2) As Byte = New Byte()

    Dim INVALIDtwoDimShortArray(1, 1) As Short = New Short(,)

    Dim INVALIDjaggedByteArray(1)() As Byte = New Byte()()

  • 為超出不規則陣列的最上層陣列指定維度長度。 下列程式碼顯示此類型的無效宣告。

    Dim INVALIDjaggedByteArray(1)(1) As Byte

  • 當指定元素值時省略 New 關鍵字。 下列程式碼顯示此類型的無效宣告。

    Dim INVALIDoneDimShortArray() As Short = Short() {0, 1, 2, 3}

  • 提供不含大括弧 ({}) 的 New 子句。 下列程式程式碼顯示此類型的無效宣告。

    Dim INVALIDsingleDimByteArray() As Byte = New Byte()

    Dim INVALIDsingleDimByteArray() As Byte = New Byte(2)

    Dim INVALIDtwoDimShortArray(,) As Short = New Short(,)

    Dim INVALIDtwoDimShortArray(,) As Short = New Short(1, 1)

存取陣列超出界限

初始化陣列的流程會將上限與下限指派給每個維度。 陣列元素的每個存取都必須為每個維度指定有效的索引或下標。 如果有任何索引低於其下限或高於其上限,則會產生 IndexOutOfRangeException 例外狀況。 編譯器無法偵測到此類錯誤,因此執行階段會發生錯誤。

判斷界限

如果另一個元件將陣列傳遞至您的程式碼,例如以程序引數的形式,您不知道該陣列的大小或其維度的長度。 在您嘗試存取任何元素之前,您應該一律先判斷每個維度的上限。 如果陣列是由 Visual Basic New 子句以外的某些方法所建立,則下限可能是 0 以外的值,而且一併判斷下限是最安全的。

指定維度

判斷多維陣列的界限時,請小心指定維度。 GetLowerBoundGetUpperBound 方法的 dimension 參數是以 0 為基礎,而 Visual Basic LBoundUBound 函式的 Rank 參數則是以 1 為基礎。

另請參閱