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 循环函数与自定义类一起使用
如何在没有 ConcurrentModificationException 的情况下使用 for-each 循环进行迭代时修改集合? [复制]