检查循环中的代码无法正常工作

时间:2015-01-27 12:40:26

标签: arrays vb.net

我制作了一个能够在网页中下载值的代码,效果很好。由于这些值是实时获取的,也就是说,只有在实际发生变化时才会执行数据下载,如果某个值发生变化,我需要进行数据下载。 然后我创建了一个代码,允许我使用更新的值和具有旧值的数组检查数组的所有元素。 代码实际上检测到给定结果何时发生了变化,但由于某些奇怪的原因,该消息显示为无穷大,好像它被卡在一个不带参数的foor中,这很奇怪。

For Each abc As Country_Data In lista
                For Each xyz As Country_Data In vecchia_lista
                    If abc.casa = xyz.casa And abc.ospite = xyz.ospite Then
                        If abc.Result <> xyz.Result Then
                            MsgBox(abc.casa & " - " & abc.ospite & " -- " & abc.Result)
                            Exit For
                        End If
                    End If
                Next
            Next

变量定义

Dim lista As New List(Of Country_Data)
    Dim vecchia_lista As New List(Of Country_Data)
    Private Structure Country_Data
        Dim casa As String
        Dim ospite As String
        Dim Result As String
    End Structure

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

根据您的评论,我收集您只想看到一个消息框,当它找到第一个结果发生变化的情况时(即使之后可能还有其他情况)。

Exit For你只使用内部For循环的退出,因此外部For循环继续循环,这可能就是你所要做的观察。

您可以这样做:

Dim keepLooping As Boolean = True

For Each abc As Country_Data In lista
    For Each xyz As Country_Data In vecchia_lista
        If abc.casa = xyz.casa And abc.ospite = xyz.ospite Then
            If abc.Result <> xyz.Result Then
                MsgBox(abc.casa & " - " & abc.ospite & " -- " & abc.Result)
                keepLooping = False
                Exit For
            End If
        End If
    Next

    If (Not keepLooping) Then Exit For
Next

这样当你想要停止循环时,它会设置布尔标志,外部循环将观察它,导致它也退出。