共用方式為


陣列轉換 (Visual Basic)

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

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

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

  • 轉換能力:兩陣列的元素型別之間必須能夠進行擴大或縮小轉換。 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.

陣列的基礎型別

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

在下列範列中,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 中的不具型別程式設計

Visual Basic 中的陣列

其他資源

Visual Basic 中的型別轉換