Sub过早结束了?

时间:2012-09-16 19:06:21

标签: vb.net

    For i As Integer = 0 To _rows.Count
        If (_rows(i).LeftOffset > largestOffset) Then
            largestOffset = _rows(i).LeftOffset
        End If
    Next i

    For i As Integer = 0 To _rows.Count

这个代码永远不会到达第二个,我可以在End If上放置一个断点,它会触发_rows.Count,就像它应该的那样,但是如果在第二个上有一个断点或者它之后的任何东西它是永远达不到。没有错误信息,程序没有冻结或任何东西,它的行为就像我完成的那样:

    For i As Integer = 0 To _rows.Count
        If (_rows(i).LeftOffset > largestOffset) Then
            largestOffset = _rows(i).LeftOffset
        End If
    Next i

    Return

    For i As Integer = 0 To _rows.Count

1 个答案:

答案 0 :(得分:3)

它应该是_rows.Count-1作为上限。循环的最后一次将因IndexOutOfRangeException而失败。

我发现在VB.net的一些地方,特别是在Form_Load中,调试器没有显示错误,Sub只是静默退出,程序继续。然而,围绕它的try ... catch块会捕获异常。