Let's consider the following code, which represents a typical situation: you are inside a nested loop and you want to exit both loops when a condition is true:
For i As Integer = 1 To 10
Dim exiting As Boolean = False
For j As Integer = 1 To 20
' If the Evaluate function returns zero you want to exit both loops
If Evaluate(i, j) = 0 Then
exiting = True
Exit For
End If
' Do something here
Next
If exiting Then Exit For
Next
It isn't important to understand what the Evaluate function does, just consider that when this function returns zero you must exit both loops. The above code isn't optimized, because it repeatedly tests the exiting variable. You might optimize the loop by using a Goto statement that points to a label following the second Next keyword, but educated programmers don't use Gotos, right? So, the question is simple: how can you simplify this code and optimize it at the same time by dropping the exiting variable?
The solution is simple, and is based on the fact that Visual Basic supports as many as three different kinds of loops: For, Do, and While. Each kind of loop supports a corresponding Exit keyword (Exit For, Exit Do, and Exit While), thus you can rewrite the code as follows:
Dim i As Integer = 1
Do While i <= 10
For j As Integer = 1 To 20
If Evaluate(i, j) = 0 Then Exit Do
' Do something here
Next
i += 1
Loop
You can use the same technique when you have up to three nested loops.
Incidentally, you can't adopt this technique in C#, because its break statement doesn't have the same "semantics power" of the Exit keyword in VB.