【发布时间】:2014-11-03 18:53:42
【问题描述】:
我正在 VBA 中创建一个不可变链接列表类。它提供了ToArray 和ToCollection 方法,我都验证过它们可以正常工作。但是Get NewEnum() As IUnknown 属性不起作用,我不知道为什么。
Public Property Get NewEnum() As IUnknown
Attribute NewEnum.VB_UserMemId = -4
Set NewEnum = ToCollection.[_NewEnum]
End Property
使用调试器将sequence 作为SList 逐步执行以下代码
Public Function Copy(ByVal sequence As Variant) As SList
Dim made As New SList
Dim element As Variant
For Each element In sequence
Set made = made.Cons(element)
Next
Set Copy = made.Reverse
End Function
显示For Each element In sequence 调用Get NewEnum 正确构建集合,然后返回Copy 并在没有执行迭代且没有错误后退出循环。我唯一的猜测是NewEnum 是一个变量的迭代器,该变量在退出Get NewEnum 时被销毁。
是这样吗?
【问题讨论】:
标签: vba