それでは、二次元配列にした場合はどうなるのか確認してみた。
具体的には、キャストの箇所で
> 型 'System.Int32[*,*]' のオブジェクトを型 'System.Int32[,]' にキャストできません。
とか言われて怒られることを期待したのだが…
早速実験。
Private Sub Button1_Click(...) Handles Button1.Click
Dim a As System.Array = _
System.Array.CreateInstance(GetType(Integer), New Integer() {2, 3}, New Integer() {1, 2})
Dim b As Integer(,)
Debug.Print(TypeName(a))
' Integer(,) と出力
b = CType(a, Integer(,))
' 例外は出ない。
Dim value As Integer
For index1 As Integer = LBound(b, 1) To UBound(b, 1)
For index2 As Integer = LBound(b, 2) To UBound(b, 2)
value = index1 * 10 + index2
b(index1, index2) = value
Next
Next
For index1 As Integer = 1 To 2
For index2 As Integer = 2 To 4
value = b(index1, index2)
Debug.Print(value.ToString)
Next
Next
End Sub
通った…どうしてですか… >_<;