疑難排解陣列 (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 以外的值,而且一併判斷下限是最安全的。
指定維度
判斷多維陣列的界限時,請小心指定維度。 GetLowerBound 與 GetUpperBound 方法的 dimension
參數是以 0 為基礎,而 Visual Basic LBound 與 UBound 函式的 Rank
參數則是以 1 為基礎。