您可以根據下列條件,將陣列型別轉換成不同的數位型態:
同等級。 這兩個陣列的排名必須相同,也就是說,它們必須有相同的維度數目。 不過,個別維度的長度不需要相同。
元素數據類型。 這兩個陣列的元素的數據類型必須是參考型別。 您無法將
Integer陣列轉換為Long陣列,甚至無法轉換為Object陣列,因為至少涉及一個值類型。 如需詳細資訊,請參閱 實值型別和參考型別。自由兌換。 在兩個陣列的元素類型之間,必須可以進行擴大或縮小的轉換。 此需求不符合的範例是嘗試在
String陣列與System.Attribute衍生類別的陣列之間進行轉換。 這兩種類型沒有任何共同之處,而且它們之間沒有任何類型轉換。
根據各個元素的轉換是擴展還是縮小,將一種陣列類型轉換為另一種陣列類型可能是擴展也可能是縮小。 如需詳細資訊,請參閱 擴大和縮小轉換。
轉換成物件陣列
當您宣告 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
另請參閱
- 數據類型
- 在 Visual Basic 中的 類型轉換
- 隱含和明確轉換
- 字串與其他類型之間的轉換
- 如何:在 Visual Basic 中將物件轉換成另一種類型
- 數據類型
- 類型轉換函式
- 陣列