VB 6 如何使自定义集合类支持 For Each

Posted

技术标签:

【中文标题】VB 6 如何使自定义集合类支持 For Each【英文标题】:VB 6 How to make Custom Collection Class to support For Each 【发布时间】:2011-08-03 12:36:05 【问题描述】:

我被安排在一个项目,其客户端前端是用 VB 6 编写的,确认!我正在尝试开发一个支持 For...Each 语法的自定义集合类。这在 VB 6 中可行吗?还是我坚持使用 For..Next 和计数器来识别索引。

感谢您的帮助!

【问题讨论】:

我能说什么,必须支付抵押贷款,我希望 VB6 开发人员会像那些 Cobol 开发人员一样变得稀有,然后当 M$ 拔掉 VB 6 运行时的插头时,我会在那里兑现所有迁移到 .net...除非,我已经错过了那艘船,该死! 【参考方案1】:

关键部分是将这个添加到自定义集合类中......

Public Function NewEnum() As IUnknown
    Set NewEnum = m_Employees.[_NewEnum]
End Function

并在过程属性中,将过程 id 设置为 -4,如下所示:

参考:http://www.vb-helper.com/howto_custom_collection_with_for_each.html

【讨论】:

对与 VB6 相关的任何内容都投赞成票感觉不对,但答案非常好。 :-) 我赞成你的评论,太有趣了!我知道你的意思,为克里斯感到难过 因为在colldispid.h 中有#define DISPID_NEWENUM (-4) 以及#define DISPID_LISTITEM 0#define DISPID_LISTCOUNT (-531),但是VB 的For Each 运算符不使用这些。

以上是关于VB 6 如何使自定义集合类支持 For Each的主要内容,如果未能解决你的问题,请参考以下文章

对于不实现 Iterable 的类,如何使用 for-each 循环

如何使自定义对象可迭代?

如何使 C++ 中的 for each 循环函数与自定义类一起使用

如何使自定义 UIButton 变暗

如何使自定义 UIView 可访问?

如何在没有 ConcurrentModificationException 的情况下使用 for-each 循环进行迭代时修改集合? [复制]