Динамические массивы в типах и классах

C версии компилятора 1.00.0 появилась возможность использовать динамические массивы в типах и классах. По мне так это очень удобная фишка. Сколько раз такое было необходимо, уж и не упомнить... Приходилось извращаться разными способами, но теперь все хватит :)

И так чтобы работать с динамическими массивами в типах и классах , нужно попросту запомнить его декларацию. А делается это так:

Dim Array(Any) As Integer


В данном случае это для типа Integer. Как видно от обычного использования (т.е. не в типе и классе) отличается только ключевым словом Any в скобах. А дальше как обычно переопределяем размер массива с помощью Redim.

Пример для своего типа с динамическим массивом:

Type A
    Dim f(Any) As String ' декларация динамического массива
End Type

Dim a As A ' создаем переменную типа A

Redim a.f(10) As String ' переопределение размера массива

' ---заполнение массива---
For i As Integer  = 0 To 10
    a.f (i) = Chr(i + &h41)
Next

' ---чтение ячеек массива---
For i As Integer  = 0 To 10
    ? a.f(i) 
Next

Sleep


А теперь пример класса с динамическим массивом:

' --- Класс B ---
Type B
    Dim f(Any) As String ' декларация динамического массива
    Declare Sub initArray(As Integer) ' метод заполнения массива
End Type

Sub B.initArray(bound As Integer)
    Redim f(bound) As String ' переопределение размера динамического массива
    For i As Integer  = 0 To bound
        f (i) = Chr(i + &h41) ' просто заполняем ячейки разными буквами
    Next
End Sub
' --------------

' ---Класс A является расширением класса B --- 
Type A extends B
    Declare Function printInfoArray() As String ' метод вывода всех ячеек в консоль
End Type

Function A.printInfoArray() As String
    For i As Integer  = 0 To Ubound(f)
        ? f(i) ' вывод на консоль всех ячеек
    Next
End Function
'--------------------------------------------

Dim class_ As A ' создаем объект класса
class_.initArray(15) ' заполняем массив
class_.printInfoArray() ' читаем массив и выводим в консоль
Sleep

Вот так просто использовать динамические массивы в типах и классах! Спасибо разработчикам за данную реализацию.