在C#循环中,中断和继续作为离开循环结构并进入下一次迭代的方法有什么区别?
例子:
foreach (DataRow row in myTable.Rows)
{
if (someConditionEvalsToTrue)
{
break; //what's the difference between this and continue ?
//continue;
}
}
在C#循环中,中断和继续作为离开循环结构并进入下一次迭代的方法有什么区别?
例子:
foreach (DataRow row in myTable.Rows)
{
if (someConditionEvalsToTrue)
{
break; //what's the difference between this and continue ?
//continue;
}
}
当前回答
break导致程序计数器跳出最内层循环的范围
for(i = 0; i < 10; i++)
{
if(i == 2)
break;
}
像这样工作
for(i = 0; i < 10; i++)
{
if(i == 2)
goto BREAK;
}
BREAK:;
continue跳转到循环的末尾。在for循环中,continue跳转到增量表达式。
for(i = 0; i < 10; i++)
{
if(i == 2)
continue;
printf("%d", i);
}
像这样工作
for(i = 0; i < 10; i++)
{
if(i == 2)
goto CONTINUE;
printf("%d", i);
CONTINUE:;
}
其他回答
何时使用中断与继续?
分手-我们将永远离开循环,永远分手。再见。
继续-意味着你今天要休息一下,明天再把它整理好(即跳过当前迭代)!
(Corny故事)\(ツ)/“”和图片,但希望能帮助你记住。
抓握提醒:不知道为什么要使用这些词。如果您想跳过迭代,为什么不使用skip而不是continue?如果给出了正确的名称,整个堆栈溢出问题和1000名开发人员不会感到困惑。)
请让我说明一点:请注意,既不添加中断,也不添加继续,将恢复您的程序;也就是说,我被某个错误捕获,然后在记录它之后,我想继续处理,下一行之间还有更多的代码任务,所以我就让它失败了。
打破
中断将强制循环立即退出。
持续
这与break相反。它没有终止循环,而是立即再次循环,跳过其余的代码。
所有人都给出了很好的解释。我仍然在发布我的答案,只是想举个例子,如果这有帮助的话。
// break statement
for (int i = 0; i < 5; i++) {
if (i == 3) {
break; // It will force to come out from the loop
}
lblDisplay.Text = lblDisplay.Text + i + "[Printed] ";
}
以下是输出:
0[打印]1[打印]2[打印]
因此,当i==3时,3[打印]和4[打印]将不会显示,因为有中断
//continue statement
for (int i = 0; i < 5; i++) {
if (i == 3) {
continue; // It will take the control to start point of loop
}
lblDisplay.Text = lblDisplay.Text + i + "[Printed] ";
}
以下是输出:
0[打印]1[打印]2[打印]4[打印]
因此,当i==3时,不会显示3[已打印],因为会继续
由于这里编写的示例对于理解这个概念非常简单,所以我认为查看所使用的continue语句的更实用版本也是一个好主意。例如:
我们要求用户输入5个唯一的数字,如果数字已经输入,我们会给他们一个错误,然后继续我们的程序。
static void Main(string[] args)
{
var numbers = new List<int>();
while (numbers.Count < 5)
{
Console.WriteLine("Enter 5 uniqe numbers:");
var number = Convert.ToInt32(Console.ReadLine());
if (numbers.Contains(number))
{
Console.WriteLine("You have already entered" + number);
continue;
}
numbers.Add(number);
}
numbers.Sort();
foreach(var number in numbers)
{
Console.WriteLine(number);
}
}
假设用户输入为1,2,2,2,3,4,5,则打印的结果为:
1,2,3,4,5
为什么?因为每次用户输入一个已经在列表中的数字时,我们的程序都会忽略它,并且不会将列表中的内容添加到列表中。现在,如果我们尝试相同的代码,但没有continue语句,让我们假设来自用户的相同输入是1,2,2,2,3,4,5。输出将是:
1,2,2,2,3,4
为什么?因为没有continue语句让我们的程序知道它应该忽略已经输入的数字。
现在,对于Break语句,我再次认为最好用例子来说明。例如:
在这里,我们希望我们的程序不断地要求用户输入一个数字。当用户键入“ok”时,我们希望循环终止,最后计算之前输入的所有数字的总和并将其显示在控制台上。
以下是break语句在本示例中的用法:
{
var sum = 0;
while (true)
{
Console.Write("Enter a number (or 'ok' to exit): ");
var input = Console.ReadLine();
if (input.ToLower() == "ok")
break;
sum += Convert.ToInt32(input);
}
Console.WriteLine("Sum of all numbers is: " + sum);
}
程序将要求用户输入一个数字,直到用户键入“OK”,然后才会显示结果。为什么?因为break语句在达到所需条件时完成或停止正在进行的过程。
如果没有break语句,程序将继续运行,当用户键入“ok”时不会发生任何事情。
我建议复制此代码并尝试删除或添加这些语句,然后自己查看更改。