Vb.net 我是否可以安全地修改VB集合';是否在迭代时对项目进行排序(使用For Each)?

Vb.net 我是否可以安全地修改VB集合';是否在迭代时对项目进行排序(使用For Each)?,vb.net,collections,iterator,Vb.net,Collections,Iterator,我可以安全地修改——我的意思是:删除并重新添加不同的索引位置——我在VB中使用为每个循环迭代的任何项目吗?我们正在讨论VBMicrosoft.VisualBasic.Collection类 如果是的话:这是设计上的,还是一个实现上的细节,是我正在构建的 我可能懒得努力搜索,但dox似乎没有对此做任何说明。医生说你不能: 只要集合保持不变,枚举数就保持有效。如果对集合进行了更改,例如添加、修改或删除元素,则枚举数将不可恢复地失效,其行为也未定义 某些集合可能不遵循此规则。不,您不能。而是制作一个集

我可以安全地修改——我的意思是:删除并重新添加不同的索引位置——我在VB中使用
为每个
循环迭代的任何项目吗?我们正在讨论VB
Microsoft.VisualBasic.Collection

如果是的话:这是设计上的,还是一个实现上的细节,是我正在构建的

我可能懒得努力搜索,但dox似乎没有对此做任何说明。

医生说你不能:

只要集合保持不变,枚举数就保持有效。如果对集合进行了更改,例如添加、修改或删除元素,则枚举数将不可恢复地失效,其行为也未定义


某些集合可能不遵循此规则。

不,您不能。而是制作一个集合的副本,以便在以后编辑和使用该副本。

您不能在按描述遍历集合时对其进行修改;i、 e.如果不出现异常,例如“collection was modified”,则无法删除项目

这并不是说您根本不能修改这些项(除了添加/删除之外,还可以执行其他操作)


如果遇到此错误,请尝试重构代码,例如使用
for
循环(通常是相反的,以避免抵消索引计数器)。

我隐约记得我已经成功地完成了,但因为我不记得在哪里完成了,我不能确定这不仅仅是运气:|顺便说一句,Microsoft.VisualBasic.Collection
的存在是为了与VB6兼容,因此不应使用。相反,使用
System.Collections.Generic
中的
列表
字典
,在VBS下,我只能使用VB集合,对吗?由于超出此线程范围的原因,我保留了一些与VBS兼容的代码,因此我使用VB10下的VB Collection类。我特别想知道Microsoft.VisualBasic.Collection是否遵循此规则。我想没有,但我不确定。