是" For"循环只是一种简单的使用方式" while loop"有一个计数变量?

时间:2014-04-30 13:45:26

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

您可能对该主题感到困惑。所以让我解释一下。

在大多数计算语言中,我们有for和while循环。但在我的例子中,我将在c#中声明循环。

当您对这样的循环和while循环进行decalre时。

1.For循环

 for(i=0;i<10;i++)
   {
     //do something
   }

2.While loop

 int i=0;
 while(i<10)
   {
     //do something
     i++;
   }

来自2个循环。当涉及编译器时,它们是否会编译相同的东西?(除了在while循环之外声明的int i。)如果它们没有,哪一个更好或更有效?

提前致谢

2 个答案:

答案 0 :(得分:0)

你的问题的简单答案是&#34;是的,他们将编译成相同的代码。&#34;有时。它将取决于语言和编译器。就C#而言,生成的代码中的任何差异都会很小,以至于在运行时间方面无关紧要。

任何for循环都可以重新编码为while,反之亦然。例如,这个while循环:

bool done = false;
while (!done)
{
    // do stuff
}

可以重新编码为for

for (bool done = false; !done;)
{
    // do stuff
}

forwhile只是抽象。有时我们更容易想到逐步执行列表,这是for语句的基础(尽管肯定不是唯一用途)。其他时候我们想做某事而某些条件仍然正确 - 因此我们使用while。有些语言有until(或者,在C中,do ... while),它将条件放在最后。

这些只是构建解决方案的不同方式。这三种类型的循环可以互换,通常只需要很小的难度,但是你通常会发现一个循环比其他两个更清楚地表达你的意图。

答案 1 :(得分:0)

对于两个代码部分,生成的中间语言可能看起来非常相似。 For用于迭代索引对象,因此如果您想要完成此操作,请使用它。但你仍然可以用while做同样的事情。

从表现的角度来看,没有区别。此外,如果您在如此低的水平上受到性能影响,您已排除任何其他主要性能问题,这反过来会提供有关IL如何在此工作的见解。