C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Part 1: We create an array of several integer elements. These are looped over in the 2 loops.
Part 2: We use a for-loop over the indexes in the array, ending at the Length. We test each element for 15, and break if true.
Part 3: We use a foreach-loop, which also supports the break keyword. This loop does the same thing as the for-loop.
ForeachTip: When a break is encountered in the IL, control is immediately transferred to the statement following the enclosing block.
C# program that uses break in loops
using System;
class Program
{
static void Main()
{
// Part 1: create an array.
int[] array = { 5, 10, 15, 20, 25 };
// Part 2: use for-loop and break on value 15.
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine("FOR: {0}", array[i]);
if (array[i] == 15)
{
Console.WriteLine("Value found");
break;
}
}
// Part 3: use foreach-loop and break on value 15.
foreach (int value in array)
{
Console.WriteLine("FOREACH: {0}", value);
if (value == 15)
{
Console.WriteLine("Value found");
break;
}
}
}
}
Output
FOR: 5
FOR: 10
FOR: 15
Value found
FOREACH: 5
FOREACH: 10
FOREACH: 15
Value found
Example: The for-loop continues through all five iterations. Break does not break the loop.
Info: The switch statement can confuse loop code. We might do better to put the switch statement itself in a method with a result value.
Tip: We can employ object-level polymorphism. This calls different methods based on a virtual dispatch table.
AbstractC# program that uses loop and switch with break
using System;
class Program
{
static void Main()
{
for (int i = 0; i < 5; i++) // Loop through five numbers.
{
switch (i) // Use loop index as switch expression.
{
case 0:
case 1:
case 2:
{
Console.WriteLine("First three");
break;
}
case 3:
case 4:
{
Console.WriteLine("Last two");
break;
}
}
}
}
}
Output
First three
First three
First three
Last two
Last two
C# program that causes break error
class Program
{
static void Main()
{
break;
}
}
Output
Error CS0139
No enclosing loop out of which to break or continue
Note: In this sense, the yield break statement is more final than the yield return statement.
Tip: Yield is implemented in the C# compiler—not at the level of the MSIL instructions.
YieldWarning: The continue statement complicates certain loop structures. In loops (as in methods) having one entry and one exit has advantages.
Tip: If continue and break are confusing, consider extracting logic into methods and using returns instead.
ReturnInfo: The book contains thorough descriptions of how the "br" instructions are used in the intermediate language.
ILInfo: In the book Code Complete, we find a "break" bug made New York City phone systems unusable for 9 hours in January 1990.