共用方式為


陣列轉換 (Visual Basic)

您可以根據下列條件,將陣列型別轉換成不同的數位型態:

  • 同等級。 這兩個陣列的排名必須相同,也就是說,它們必須有相同的維度數目。 不過,個別維度的長度不需要相同。

  • 元素數據類型。 這兩個陣列的元素的數據類型必須是參考型別。 您無法將 Integer 陣列轉換為 Long 陣列,甚至無法轉換為 Object 陣列,因為至少涉及一個值類型。 如需詳細資訊,請參閱 實值型別和參考型別

  • 自由兌換。 在兩個陣列的元素類型之間,必須可以進行擴大或縮小的轉換。 此需求不符合的範例是嘗試在String陣列與System.Attribute衍生類別的陣列之間進行轉換。 這兩種類型沒有任何共同之處,而且它們之間沒有任何類型轉換。

根據各個元素的轉換是擴展還是縮小,將一種陣列類型轉換為另一種陣列類型可能是擴展也可能是縮小。 如需詳細資訊,請參閱 擴大和縮小轉換

轉換成物件陣列

當您宣告 Object 陣列而不初始化陣列時,只要它保持未初始化,它的元素類型就會 Object 維持不變。 當您將它設定為特定類別的陣列時,它會變成該類別的類型。 不過,其基礎類型仍然是Object,您之後可以將它設定為無關類別的另一個陣列。 由於所有類別都衍生自 Object,因此您可以將陣列的元素類型從任何類別變更為其他任何類別。

在下列範例中,類型 studentString之間沒有轉換,但兩者都衍生自 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 。 由於Stringstudent之間沒有轉換,因此最後一個語句會失敗。

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  

另請參閱