I'm not sure ReDim
works like that. Changing the code to this will achieve what I believe you are after:
Public Sub DimArrays() ReDim MyBS(3) Dim i As Integer For i = 0 To MyBS.Length - 1 MyBS(i) = New BS() Dim f = GetType(BS).GetField(ReadFieldString()) f.SetValue(MyBS(i), Array.CreateInstance(f.FieldType.GetElementType(), GetArrayDim())) Next End Sub
However, I think a better approach would be to specify the array size in the BS constructor.