共用方式為


陣列轉換 (Visual Basic)

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

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

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

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

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

轉換為 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.

tbatye4h.collapse_all(zh-tw,VS.110).gif陣列的基礎型別

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

在下列範列中,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)

其他資源

Visual Basic 中的型別轉換

Visual Basic 中的陣列