0

我有一个问题,我有一个属性是数组的类。Load 方法将数组的大小调整为文件中的条目数,为该文件条目创建一个新的条目类,并将其分配给属性数组中的一个新元素。但是,当我尝试在 Load 方法之外使用此数组时,数组保持正确的大小,但所有元素都是“空的”。下面基本上是我想要做的。我假设这是分配新 Entry 类的范围问题,但我不知道如何纠正这个对 VBScript 来说是新的。下面是一些快速代码,可让您了解我正在尝试的内容。

Class Entry
    Public Name
End Class

Class Config
    Private theArray()

    Public Sub Load()
        ...
        Do While Not configFile.AtEndOfStream

        if(UBound(theArray) < theCount) Then
            ReDim Preserve theArray(theCount)
        End If

        Set theArray(theCount) = new Entry

        theArray(theCount).Name = "Bobby Joe Sue"
        Wscript.Echo theArray(theCount).Name & " is working"
    End Sub

    Public Function GetList()
        GetList = theArray
    End Function
End Class

现在,如果我创建 Config 类的一个实例,调用 load 方法,为 GetList 结果分配一个变量,我可以循环遍历数组,它将是正确的大小。但是,数组中的每个条目都是空的,而不是我可以访问 Entry.Name 的 Entry 类的实例。有人对如何解决此问题有任何建议吗?

4

2 回答 2

0

也许你错过了什么。

Set oConfig = New Config
oConfig.Load
aList = oConfig.List
Wscript.Echo "Type: " & TypeName(aList(0))
Wscript.Echo "Name: " & aList(0).Name

'> Bobby Joe Sue is working
'> Type: Entry
'> Name: Bobby Joe Sue

Class Entry
    Public Name
End Class

Class Config
    Private theArray()
    Private theCount

    Public Property Get List()
        List = theArray
    End Property

    Public Sub Load()
        theCount = theCount + 1
        ReDim Preserve theArray(theCount)
        Set theArray(theCount) = new Entry
        theArray(theCount).Name = "Bobby Joe Sue"
        Wscript.Echo theArray(theCount).Name & " is working"
    End Sub

    Private Sub Class_Initialize
        theCount = -1
    End Sub
End Class
于 2013-03-21T23:59:20.340 回答
0

您的数组初始化不起作用。像这样改变你Class Config

Class Config
  Private theArray

  Private Sub class_initialize()
    theArray = Array()
  End Sub

  '...
End Class
于 2013-03-21T20:17:29.593 回答