2
    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 或之后的任何断点永远不会到达。没有错误消息,程序没有冻结或任何东西,它的行为就像我做的一样:

    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
4

1 回答 1

3

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

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

于 2012-09-16T19:09:55.643 回答