升級建議:使用以零起始的陣列

更新:2007 年 11 月

Visual Basic 6.0 允許您定義具有任意整數下限和上限的陣列。您也可以使用 ReDim 將 Variant 重新指派為陣列。若要提供與其他語言的互通性 (Interoperability),Visual Basic 2008 陣列的下限必須為零,而且除非陣列變數已預先以 Dim 關鍵字來宣告,否則不可以使用 ReDim。雖然這將限制陣列的定義方式,但是也讓您可以在 Visual Basic 2008 和任何其他 .NET Framework 語言之間傳遞陣列。下列範例顯示了此限制:

'BAD: LBound must be 0
Dim a(1 To 10) As Integer
'BAD: Can't use ReDim without Dim
ReDim v(10)
'OK: Creates an array of 11 integers
Dim b(10) As Integer
'OK: Can ReDim previously Dimed variable
ReDim b(5) As Integer

這個改變的副作用是語言中沒有 Option Base 陳述式 (Statement) 了。

當專案升級為 Visual Basic 2008 後,所有的 Option Base 陳述式都會從程式碼中移除。如果陣列以零起始,將不會被改變。不過,如果陣列不是以零起始,則下限將被移除,且程式碼中會插入警告,如下列範例所示:

Dim a(1 To 10) As Integer

修改為:

' UPGRADE_WARNING: Lower bound of an array was changed from 1 to 0.
Dim a(10) As Integer

在許多情況下,升級後的程式碼都可像以前一樣地運作;不過,如果您的應用程式邏輯所依賴的下限是 1,則您便需要進行一些修改。Dim、ReDim 和 LBound 陳述式都會以警告來標記,協助您檢閱變更。

基於這個原因,您應該在 Visual Basic 6.0 程式碼中使用以零起始的陣列,避免使用 ReDim 進行陣列宣告,也避免使用 Option Base 1。

請參閱

其他資源

語言升級的建議