C#While Loop vs For Loop?

时间:2016-02-14 18:57:12

标签: c# loops for-loop while-loop console

在C#中,一段时间以来一直困扰着我,问题是在While和For循环之间的实际主要区别是什么。它只是纯粹的可读性,即;你可以在for循环中完成的所有事情都可以在while循环中完成,只需在不同的地方完成。所以请看这些例子:

int num = 3;
while (num < 10)
{
    Console.WriteLine(num);
    num++;
} 

VS

for (int x = 3; x < 10; x++)
{
    Console.WriteLine(x);
}

两个代码循环产生相同的结果,并且两者之间的唯一区别是for循环强制您声明一个新变量并且还在开始时每个循环周期设置迭代值?也许我在任何重大差异方面都缺少其他东西,但如果有人可以直截了当地表达我的意见,那就太好了。感谢。

4 个答案:

答案 0 :(得分:8)

  

是两者之间的唯一区别,for循环强制您声明一个新变量,并在开始时每个循环周期设置迭代值?

for循环强迫你一无所获。您可以省略3个元素中的任何一个。最小的形式是

for(;;)  // forever
{
  DoSomething();
}

但是你可以使用3个元素来编写更简洁的代码:

for(initializer; loop-condition; update-expression)
{
  controlled-statements;
}

相当于:

{
    initializer; 
    while(loop-condition)
    {
       controlled-statements;

    continue_target:  // goto here to emulate continue
       update-expression;
    }
}

请注意{} for(int i = 0; ...; ...)外部i大括号{for for-for {} 明显的好处。

但是使用的主要区别在于你在循环中调用continue;,在while循环中比在for循环中更容易得到逻辑错误。

答案 1 :(得分:2)

是的,它们在后台完全相同(在汇编中,即)。

通常,当重复次数已知并且我们不会更改我们的计数器(索引)时,更常见的是使用for循环。

while循环还具有前哨循环的优点,例如在从用户获取输入之前更容易,直到给出特定内容。

答案 2 :(得分:1)

从根本上讲,差异是: For循环预先知道它将循环多少次,而while循环则不知道。 For循环具有初始化步骤,而while循环则没有 For循环使用“步长值”或增量/减量步长,而while循环则不使用。 这是一个Java的示例,用于从0到99循环循环并输出数字。请注意,循环是作为for循环结构的一部分进行初始化和递增的。

for(int i=0; i<100; i++) {
  System.out.println(i);
}

这是Java的示例,同时循环打印出整数数组中的所有元素。请注意,循环变量是如何在循环之前初始化的,并在循环体内增加。

int [] intArray = {1, 3, 5, 7, 9}; 
int i=0;
while(i<intArray.length) {
  System.out.println(intArray[i++]);

}

答案 3 :(得分:0)

当您确定最终值是多少或循环应执行多少(直到该值)时,请使用“ for”循环,否则请使用“ while”循环。