共用方式為


陣列轉換

更新:2007 年 11 月

您可以將一種陣列型別 (Array Type) 轉換為不同的陣列型別,但必須先符合以下條件:

  • 相等陣序。 兩陣列的陣序規範必須相同,也就是必須有相同的維度數目。不過各自維度的長度不一定要相同。

  • 元素資料型別。 兩陣列元素的資料型別必須是參考型別 (Reference Type)。您無法將 Integer 陣列轉換為 Long 陣列,甚或是 Object 陣列,這是因為其中都至少有一實值型別。如需詳細資訊,請參閱 實值型別和參考型別

  • 轉換能力。 兩陣列的元素型別之間必須能夠進行擴大或縮小轉換。String 陣列與衍生自 System.Attribute 類別的陣列間無法進行擴大或縮小轉換的範例即為嘗試轉換。這兩種型別完全不同,它們之間也不存在任何種類的轉換。

從一陣列型別轉換為另一陣列型別是屬於擴大或縮小,這要根據各自元素的轉換是擴大或縮小而定。如需詳細資訊,請參閱 擴展和縮小轉換

轉換為 Object 陣列

若您在宣告 Object 陣列之前未先初始化,則在尚未初始化之前,陣列的元素型別都是 Object。若您將它設定為特定類別的陣列,它會使用這個類別的型別。不過它的基礎型別仍然是 Object,接下來您可以將它設定為不相關類別的其他陣列。由於所有的類別都衍生自 Object,您可以將任何類別的陣列元素型別改變成任何其他類別。

在下列範例中,student 型別和 String 之間沒有轉換,但型別都衍生自 Object,所以所有的指派都有效。

' Assume student has already been defined as a class.
Dim testArray() As Object
' testArray is still an Object array at this point.
Dim names() As String = New String(3) {"Name0", "Name1", "Name2", "Name3"}
testArray = New student(3) {}
' testArray is now of type student().
testArray = names
' testArray is now a String array.

陣列的基礎型別

如果您原本宣告特定類別的陣列,則它的基礎元素型別是這個類別。如果您隨後將它設定為其他類別的陣列,則在兩個類別之間必須有轉換。

在下列範列中,students 是 student 陣列。由於 String 與 student 之間未進行轉換,最後的陳述式並未成功。

Dim students() As student
Dim names() As String = New String(3) {"Name0", "Name1", "Name2", "Name3"}
students = New Student(3) {}
' The following statement fails at compile time.
students = names

請參閱

工作

HOW TO:在 Visual Basic 中將物件轉換成其他型別

概念

Visual Basic 中的資料型別

隱含和明確轉換

轉換期間值的變更

字串與其他型別之間的轉換

Visual Basic 中的不具型別程式設計

參考

資料型別摘要 (Visual Basic)

型別轉換函式

其他資源

Visual Basic 中的型別轉換

Visual Basic 中的陣列