オブジェクト型 (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.基になる配列の型
最初に特定のクラスを使用して配列を宣言していた場合、配列の基となる要素型はそのクラスになります。後で要素型を他のクラスの配列に設定する場合は、2 つのクラス間で変換が必要になります。
次の例では、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