0

我在 vb .net 集合中添加了 2 个元素。调试时我可以看到 .count = 2。

如果监视集合中的元素,我通常会看到零索引中的第一个空元素,然后是我添加的两个元素。

在此处输入图像描述

问题是,当我使用 For Each Next 循环迭代集合时,会迭代空元素而不会迭代最后一个元素。

这就是结构的声明方式

Structure bstCategory
    Dim categoryCode As String
    Dim categoryVersion As String
End Structure

这就是集合的填充方式

 With ci.tItem.information
    .categories = New Collection
    Dim additionalClassification As bstCategory
    additionalClassification.categoryCode = "1"
    additionalClassification.categoryVersion = "A"
    .categories.Add(additionalClassification)
    additionalClassification.categoryCode = "2"
    additionalClassification.categoryVersion = "B"
    .categories.Add(additionalClassification)
End With

这就是集合的迭代方式

For Each category As bstCategory In ci.tItem.information.categories
        ValidateCategory(categorycode)
Next

我究竟做错了什么?

4

1 回答 1

0

我无法重现您的问题,它适用于我在 vs2010 目标 .net 2.0 中使用 vb.net

这是我根据您的代码尝试的:

Module Module1

    Structure bstCategory
        Dim Code As String
        Dim Version As String
    End Structure

    Sub Main()

        Dim categories As New Collection()
        Dim c As New bstCategory
        c.Code = "1"
        c.Version = "1"
        categories.Add(c)
        categories.Add(c)

        For Each category As bstCategory In categories
            Console.WriteLine(category.Code)
        Next

    End Sub

End Module

如果 For Each 给您带来了奇怪的行为,您可以将其更改为使用 For 。

For i As Integer = 1 To categories.Count
   Console.WriteLine(categories(i).Code)
Next

无论如何,您所面临的情况很奇怪,我建议您在 Google 中查找 index 0 文本。我做到了,有一些页面在谈论这个,所以你的答案可能在那里。

谷歌:“为基于 1 的数组调整的空占位符”

希望有帮助!

这是一张图片,显示了集合中从 0 到 2 的 3 个值,但是,当迭代时,它只进入两次,打印出 1 两次。

在此处输入图像描述

于 2013-01-18T13:22:48.090 回答