-
C# Break and Continue
-
When writing real-world applications in C#, loops are everywhere — from processing user input to handling large datasets.
But simply looping is not enough. You often need control over how the loop behaves.
Sometimes you want to stop the loop immediately. Other times, you want to skip certain iterations without breaking the entire loop.
This is where break and continue statements in C# become extremely powerful.
They give you fine-grained control over loop execution and help you write cleaner, faster, and more efficient code.
What is break in C#?
The break statement is used to immediately terminate a loop.
As soon as the break statement is executed, the loop stops and control moves to the next statement after the loop.
This is especially useful when you have already achieved your goal and continuing the loop would be unnecessary.
Basic Example
for (int i = 1; i <= 10; i++) { if (i == 5) { break; } Console.WriteLine(i); }
1 2 3 4Here, the loop stops completely when the value reaches 5.
What is continue in C#?
The continue statement is used to skip the current iteration and move to the next iteration of the loop.
Unlike break, it does not terminate the loop completely — it only skips specific conditions.
Basic Example
for (int i = 1; i <= 5; i++) { if (i == 3) { continue; } Console.WriteLine(i); }
1 2 4 5Here, only the iteration where
i = 3is skipped.
Why break and continue are Important
Let’s understand this with a practical scenario.
Imagine you are searching for a user in a list:
- Once found → no need to continue (use break)
- Skip invalid entries → use continue
Without these statements, your code would be less efficient and harder to read.
Using break in Different Loop Types
1. break in for Loop
for (int i = 1; i <= 5; i++) { if (i == 3) { break; } Console.WriteLine(i); }
Stops loop immediately.
2. break in while Loop
int i = 1; while (i <= 5) { if (i == 4) { break; } Console.WriteLine(i); i++; }
Loop stops when condition is met.
3. break in do-while Loop
int i = 1; do { if (i == 2) { break; } Console.WriteLine(i); i++; } while (i <= 5);
Even in do-while, break exits immediately.
4. break in foreach Loop
int[] nums = { 1, 2, 3 }; foreach (int n in nums) { if (n == 2) { break; } Console.WriteLine(n); }
Stops iterating collection completely.
Using continue in Different Loop Types
1. continue in for Loop
for (int i = 1; i <= 5; i++) { if (i == 2) { continue; } Console.WriteLine(i); }
2. continue in while Loop
int i = 0; while (i < 5) { i++; if (i == 3) { continue; } Console.WriteLine(i); }
Important: Always update variable before continue.
3. continue in do-while Loop
int i = 0; do { i++; if (i == 2) { continue; } Console.WriteLine(i); } while (i < 5);
4. continue in foreach Loop
int[] nums = { 1, 2, 3 }; foreach (int n in nums) { if (n == 2) { continue; } Console.WriteLine(n); }
Key Difference Between break and continue
Feature break continue Behavior Exits loop Skips iteration Loop Flow Stops completely Moves to next iteration Use Case When task completed When skipping condition
Performance and Readability Impact of break and continue
While break and continue are simple control flow statements, they can have a significant impact on both performance and code readability when used correctly.
Improving Performance with break
Using break helps avoid unnecessary iterations.
Imagine searching for a value in a large dataset:
int[] numbers = { 10, 20, 30, 40, 50 }; foreach (int num in numbers) { if (num == 30) { Console.WriteLine("Found"); break; } }
Once the value is found, the loop exits immediately, saving processing time.
In large collections, this can significantly improve performance.
Reducing Unnecessary Work with continue
Continue helps skip unwanted data without breaking the loop.
int[] numbers = { 1, 2, 3, 4 }; foreach (int num in numbers) { if (num % 2 == 0) { continue; } Console.WriteLine(num); }
This skips even numbers and processes only required data.
Impact on Code Readability
When used properly, break and continue can make code easier to read by clearly expressing intent.
Compare this:
foreach (int num in numbers) { if (num % 2 != 0) { Console.WriteLine(num); } }
With this:
foreach (int num in numbers) { if (num % 2 == 0) { continue; } Console.WriteLine(num); }
The second version is often easier to understand because it clearly skips unwanted cases.
When Overuse Becomes a Problem
Excessive use of break and continue can make code harder to follow.
for (int i = 1; i <= 10; i++) { if (i == 2) continue; if (i == 5) break; if (i == 7) continue; Console.WriteLine(i); }
This becomes difficult to maintain and understand.
Key Takeaway
- Use break to stop unnecessary processing
- Use continue to skip unwanted conditions
- Write clear and readable logic
- Avoid overusing multiple conditions inside loops
Efficient use of break and continue leads to cleaner code and better performance in real-world applications.
Common Mistakes Developers Make
- Forgetting variable update in while loop
- Using break instead of continue
- Creating infinite loops
- Misunderstanding nested loop behavior
Best Practices
- Use break for early exit
- Use continue for skipping conditions
- Avoid overusing them
- Keep logic simple and readable
Summary
Break and Continue in C# are essential loop control statements that help you manage execution flow efficiently.
Break exits the loop completely, while continue skips specific iterations.
Using them correctly improves performance, readability, and control over your code.
In the next article, we will explore advanced looping techniques and real-world coding challenges.