With the topic of constructing loops using the C# for statement, this chapter aims to introduce two more looping options: the while
and do ... while
constructs.
The C# for
loop described in the previous lesson works well when you know in advance how many times a particular task needs to be repeated in a program. However, there will be instances where code needs to be repeated until a certain condition is met, with no way of knowing in advance how many repetitions will be needed to meet those criteria. While it is possible to achieve this with a for
loop containing a break
statement, C# provides a better alternative in the form of the while
loop (yet another construct inherited by C# from the C Programming Language).
The C# while
loop
Essentially, the while
loop repeats a set of tasks until a specified condition is met. The while
loop syntax is defined as follows:
while (<condition>) { // C# statements go here }
In the above example, is an expression that will return either true
or false
and the // C# statements go here comment represents the C# code to be executed while the condition expression continues to evaluate to true
. For example:
int myCount = 0; while ( myCount < 100 ) { myCount++; } System.Console.WriteLine($"myCount = {myCount}");
In the above example, the while
expression will evaluate whether the myCount
variable is less than 100. If it is already greater than 100, the code in the braces is skipped, and the loop exits without performing any tasks.
If, on the other hand, myCount
is not greater than 100, the code in the braces is executed, and the loop returns to the while
statement and repeats the evaluation of myCount
. This process repeats until the value of myCount
is greater than 100, at which point the loop exits.
C# do
… while
loops
It is often helpful to think of the do
… while
loop as an inverted while
loop. The while
loop evaluates an expression before executing the code contained in the loop’s body. The code is not executed if the expression evaluates to false on the first check. The do … while loop, on the other hand, is provided for situations where you know that the code contained in the loop’s body will always need to be executed at least once. For example, you may want to keep stepping through the items in an array until a specific item is found. You know that you have to at least check the first item in the array to have any hope of finding the entry you need. The syntax for the do
… while
loop is as follows:
do { // C# statements here } while (<conditional expression>);
In the do
… while
example below, the loop will continue until the value of a variable named i
equals 0:
int i = 10; do { i--; System.Console.WriteLine($"i = {i}"); } while (i > 0);
Breaking from loops
As with the for
loop, it is also possible to exit from a while
or do
… while
loop at any time through the use of the break
statement. When the execution path encounters a break
statement, the looping will stop, and execution will proceed to the code immediately following the loop. In the following example, the loop is coded to exit when the value of i
matches the value of j
:
int i = 0; int j = 5; while (i < 100) { i++; System.Console.WriteLine($"i = {i}"); if (i == j) break; }
As with breaking from for
loops, it is important to note that in the case of nested while
and do
… while
loops the break
statement only exits the current loop, leaving the outer loop to continue executing (and most likely once again executing the inner loop).
The continue
statement
The continue
statement causes all remaining code statements in a loop to be skipped and execution to be returned to the top of the loop.
In the following example, the WriteLine
method is only called when the value of variable i
is an even number (i.e., divisible by 2 with no remainder):
int i = 1; while (i < 20) { i++; if ((i % 2) != 0) continue; System.Console.WriteLine ("i = " + i); }
The continue
statement in the above example will cause the WriteLine
call to be skipped unless the value of i
can be divided by 2 with no remainder. If the continue
statement is triggered, execution will skip to the top of the while
loop and the statements in the body of the loop will be repeated (until the value of i
exceeds 19).