Книга: C# 2008 Programmer
Exiting from a Loop
Exiting from a Loop
To break out of a loop prematurely (before the exit condition is met), you can use one of the following keywords:
? break
? return
? throw
? goto
break
The break
keyword allows you to break out of a loop prematurely:
int counter = 0;
do {
Console.WriteLine(counter++);
//---exits the loop when counter is more than 100
if (counter > 100) break;
} while (true);
In this example, you increment the value of counter
in an infinite do-while
loop. To break out of the loop, you use a if
statement to check the value of counter. If the value exceeds 100, you use the break
keyword to exit the do-while
loop.
You can also use the break keyword in while
, for
, and foreach
loops.
return
The return
keyword allows you to terminate the execution of a method and return control to the calling method. When you use it within a loop, it will also exit from the loop. In the following example, the FindWord()
function searches for a specified word ("car") inside a given array. As soon as a match is found, it exits from the loop and returns control to the calling method:
class Program {
static string FindWord(string[] arr, string word) {
foreach (string w in arr) {
//--- if word is found, exit the loop and return back to the
// calling function---
if (w.StartsWith(word)) return w;
}
return string.Empty;
}
static void Main(string[] args) {
string[] words = {
"-online", "4u", "adipex", "advicer", "baccarrat", "blackjack",
"bllogspot", "booker", "byob", "car-rental-e-site",
"car-rentals-e-site", "carisoprodol", "casino", "casinos",
"chatroom", "cialis", "coolcoolhu", "coolhu",
"credit-card-debt", "credit-report-4u"
};
Console.WriteLine(FindWord(words, "car")); //---car-rental-e-site---
}
}
throw
The throw
keyword is usually used with the try-catch-finally
statements to throw an exception. However, you can also use it to exit a loop prematurely. Consider the following block of code that contains the Sums()
function to perform some addition and division on an array:
class Program {
static double Sums(int[] nums, int num) {
double sum = 0;
foreach (double n in nums) {
if (n == 0)
throw new Exception("Nums contains zero!");
sum += num / n;
}
return sum;
}
static void Main(string[] args) {
int[] nums = { 1, 2, 3, 4, 0, 6, 7, 8, 9 };
try {
Console.WriteLine(Sums(nums, 2));
} catch (Exception e) {
Console.WriteLine(e.Message);
}
}
}
When the foreach
loop reaches the fifth element of the array (0), it throws an exception and exits the loop. The exception is then caught by the try-catch
loop in the Main()
method.
goto
The goto keyword transfers program control directly to a labeled statement. Using goto is not considered a best practice because it makes your program hard to read. Still, you want to be aware of what it does, so the following example shows its use:
string[] words = {
"-online", "4u", "adipex", "advicer", "baccarrat", "blackjack",
"bllogspot", "booker", "byob", "car-rental-e-site",
"car-rentals-e-site", "carisoprodol", "casino", "casinos",
"chatroom", "cialis", "coolcoolhu", "coolhu",
"credit-card-debt", "credit-report-4u"
};
foreach (string word in words) {
if (word == "casino")
goto Found;
}
goto Resume;
Found:
Console.WriteLine("Word found!");
Resume:
//---other statements here---
In this example, if the word casino is found in the words
array, control is transferred to the label named Found:
and execution is continued from there. If the word is not found, control is transferred to the label named Resume:
.
- Looping
- Nested for Loop
- Skipping an Iteration
- Exit Without Saving
- foreach
- Инструкция INSERT INTO ... FROM ... UNION ...
- Creating CDs from the Command Line
- Chapter 2. Four Puzzles From Cyberspace
- Installing from CD or DVD
- Starting X from the Console by Using startx
- Use Essential Commands from the
- Logging In and Out from a Remote Computer