Private Sub Class_Initialize size = 0 ReDim items(1) End Sub
Private Sub Class_Terminate items = null End Sub
Public Function Add(ByVal value) If (size = Ubound(items)) Then EnsureCapacity((size + 1))
items(size) = value size = size + 1 Add = size End Function
Public Property Get Item(index) Item = items(index) End Property
Public Property Let Item(index, vObject) items(index) = vObject End Property
Property Get Count Count = size End Property
Public Property Get Capacity() Capacity = Ubound(items) End Property
Public Property Let Capacity(value) If (value > Ubound(items)) Then If (value size) Then Err.Rise 6
If (value > 0) Then ReDim Preserve items(value) Else ReDim Preserve items(3) End If End If End Property
Private Sub EnsureCapacity(ByVal min) If (Ubound(items) min) Then Dim num1 : num1 = IIf((Ubound(items) = 0), 4, (Ubound(items) * 2)) If (num1 min) Then num1 = min Capacity = num1 End If End Sub
Private Function IIf(j, r1, r2) IF (j) Then IIf = r1 Else IIf = r2 End IF End Function
End Class
示例:
Dim al : Set al = new ArrayList al.Add(1) al.Add(2) al.Add(3) al.Add(4) al.Add(5) al.Add(6) al.Add(7) al.Add(8) al.Add(9) al.Add(10)
For i = 0 To al.Count -1 w("Index" i ": " al.Item(i)) Next