您可能对该主题感到困惑。所以让我解释一下。
在大多数计算语言中,我们有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。)如果它们没有,哪一个更好或更有效?
提前致谢
答案 0 :(得分:0)
你的问题的简单答案是&#34;是的,他们将编译成相同的代码。&#34;有时。它将取决于语言和编译器。就C#而言,生成的代码中的任何差异都会很小,以至于在运行时间方面无关紧要。
任何for
循环都可以重新编码为while
,反之亦然。例如,这个while
循环:
bool done = false;
while (!done)
{
// do stuff
}
可以重新编码为for
:
for (bool done = false; !done;)
{
// do stuff
}
for
和while
只是抽象。有时我们更容易想到逐步执行列表,这是for
语句的基础(尽管肯定不是唯一用途)。其他时候我们想做某事而某些条件仍然正确 - 因此我们使用while
。有些语言有until
(或者,在C中,do ... while
),它将条件放在最后。
这些只是构建解决方案的不同方式。这三种类型的循环可以互换,通常只需要很小的难度,但是你通常会发现一个循环比其他两个更清楚地表达你的意图。
答案 1 :(得分:0)
对于两个代码部分,生成的中间语言可能看起来非常相似。 For用于迭代索引对象,因此如果您想要完成此操作,请使用它。但你仍然可以用while做同样的事情。
从表现的角度来看,没有区别。此外,如果您在如此低的水平上受到性能影响,您已排除任何其他主要性能问题,这反过来会提供有关IL如何在此工作的见解。