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

このコードは 2 番目の for に到達することはありません。End If にブレークポイントを設定すると、_rows.Count がトリガーされますが、2 番目の 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 に答える